묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결처음 만난 리액트(React)
섹션 4 npm start 하면 빈 화면만 나옵니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요다 바꿨는데도 npm start하면 빈 화면만 나와요
-
미해결처음 만난 리액트(React)
섹션 4 jsx 코드 실습 부분 index.js에서 자꾸 오류납니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.돌겠네요 진짜
-
미해결처음 만난 리액트(React)
코드는 제대로 입력한거같은데 버튼이 생성이 되지 않습니다.
-
해결됨웹 애니메이션을 위한 GSAP 가이드 Part.01
autoAlpha : 0 사용 시 css로 visibility hidden 꼭 줘야하는지 궁금해요
autoAlpha : 0 이css visibility : hidden, opacity 0 으로 설정해준다고 하고css에 visibility hidden 을 제거해도 깜빡이는 현상은 안일어나더라구요!css에도 visibility:hidden을 작성하는 이유가 있을까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
memoizedDispatch 말고 MemoizedProvider
const MemoizedProvider = React.memo(TodosStateContext.Provider);TodosStateContent가 컴포넌트이니까 memoizedDispatch의 useMemo말고 아예 React.memo를 사용해서 최적화 해도 되나요? 이렇게 하면 안에 있는 객체 {onCreate, onUpdate, onDelete}도 재생성 안되지 않을까요..?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
비동기 함수로 불러온 데이터를 화면에 렌더링
강의 내용을 바탕으로 프로젝트를 하나 만들다 안되는 부분이 있어 질문드립니다.제가 axios를 이용해서 데이터를 받는 함수를 만들었는데요 const [posts, setPosts] = useState(); const getAllPosts = async () => { try{ const {data} = await axios.get("/api/posts"); console.log("axios - getAllPosts: ", data); setPosts(data); } catch(error){ console.log("getAllPosts 에러: ",error); } }getAllPosts(); 이런 코드를 작성했을때 렌더링할때 axios를 이용해서 받은 데이터를 posts란 state에 저장하고 이를 리스트 형태로 렌더링하려고 하는데 저기서 그냥 getAllPosts(); 를 해버리면 콘솔창에 무한하게 posts 값이 찍히고 화면에는 렌더링이 되지 않더라고요 ㅠ 콘솔창에는 그래도 데이터가 찍히긴 하는데 말이죠..ㅠgetAllPosts메서드는 비동기 함수니깐 컴포넌트들이 렌더링되기 전에 실행되고 컴포넌트들이 렌더링되는거 아닌가요? 그럼 저 메서드를 호출하면 잘 렌더링이 되야하는거 아닌가요??ㅠㅠ왜 저렇게 콘솔창에는 무한하게 데이터값이 찍히고 컴포넌트에는 왜 렌더링이 되지 않는건가요??
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
useEffect 사이클
function App() {const [count, setCount] = useState(0);const [input, setInput] = useState("");const isMount = useRef(false);// 1. 마운트 : 탄생useEffect(() => {console.log("mount"); }, []);// 2. 업데이트 : 변화, 리렌더링useEffect(() => {if (!isMount.current) {isMount.current = true;return; }console.log("update"); });// 3. 언마운트 죽음const onClickButton = (value) => {setCount(count + value);// console.log(count + value); };return (... );} 위 코드를 작성하고 새로고침을 하면위 처럼 콘솔에 모든 mount, unmount, update가 뜹니다....코드상 update도 안떠야하는데 왜 뜨는걸까요?
-
미해결Vue 3 시작하기
Parsing 오류
axios로 할 때는 잘 되다가 setup을 사용한 순간부터 계속 오류가 납니다. 인터넷에 검색해봐서 나온 방법들을 적용 해봤는데도 해결이 안되네요..
-
미해결Vue 3 시작하기
users 안 보임
똑같이 따라했는데 users가 보이지 않습니다..ㅠㅠ
-
해결됨한 번에 끝내는 자바스크립트: 바닐라 자바스크립트로 SPA 개발까지
상태관리와 SPA
자바스크립트로 SPA 하는법을 꼭 배우고싶었는데강의가 너무 좋아요! 섹션8부터 상태관리하면서 SPA 방식으로 코드를 리팩토링하는데강의에서 알려주시는 방법이약간 리액트의 동작방식과 비슷하다고 봐도 되는걸까요?! 제가 리액트를 얼마전에 배웠는데뭔가 리액트의 내부 동작을 구현하는 느낌으로 생각해도 되는건지..아니면 아예 다른 방식으로 하는건지 궁금해서 여쭤봅니다!!
-
해결됨Do It! 장고+부트스트랩: 파이썬 웹개발의 정석
url pattern관련 문의
안녕하세요. urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 이런식으로 url패턴을 만들어주면 이렇게 (^media/(?P<path>.*)$)패턴이 생기는거 같고 그 다음 views.py에서 해당 url을 처리할 로직을 만들어야하는걸로 아는데.. 이 경우는 어째서 예외인가요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
스웨거 문서에 Basic, Bearer를 적용하는 방법에 대해 질문 드립니다.
AccessToken, RefreshToken 강의 내용을 모두 마친 후에 스웨거 문서 작성 방법에 대해 궁금한 점이 있어 질문 드립니다. @Headers()를 사용하여 rawToken 값을 전달하는 경우 스웨거 문서에서는 다음과 같이 @ApiBasicAuth('basic'), @ApiBearerAuth('bearer') 형식을 작성을 해야하는지 질문 드립니다. import { Body, Controller, Headers, Post, UseGuards } from '@nestjs/common'; import { AuthFacade } from '@root/resource/auth/auth.facade'; import { BasicTokenGuard } from '@root/common/guard/basic-token.guard'; import { RefreshTokenGuard } from '@root/common/guard/bearer-token.guard'; import { IsPublic } from '@root/common/decorator/is-public.decorator'; import { ApiBasicAuth, ApiBearerAuth, ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger'; import { AccessAndRefreshTokenResponse, AccessTokenResponse, RefreshTokenResponse, } from '@root/resource/auth/dto/response/token-response.dto'; @ApiTags('Auth API') @Controller('v1/auth') export class AuthController { constructor(private readonly authFacade: AuthFacade) {} @ApiOperation({ summary: '로그인', description: 'Authorization Basic 이메일:비밀번호 방식으로 로그인합니다.' }) @ApiBasicAuth('basic') @ApiOkResponse({ type: AccessAndRefreshTokenResponse }) @IsPublic() @UseGuards(BasicTokenGuard) @Post('login') async login(@Headers('authorization') rawToken: string) { return await this.authFacade.loginWithEmail(rawToken); } @ApiOperation({ summary: '회원가입', description: '이메일, 비밀번호로 회원가입을 진행합니다.' }) @ApiOkResponse({ type: AccessAndRefreshTokenResponse }) @IsPublic() @Post('register') async register(@Body('email') email: string, @Body('password') password: string) { return await this.authFacade.registerWithEmail(email, password); } @ApiOperation({ summary: 'AccessToken 갱신', description: 'RefreshToken으로 AccessToken을 갱신합니다.' }) @ApiBearerAuth('bearer') @ApiOkResponse({ type: AccessTokenResponse }) @IsPublic() @UseGuards(RefreshTokenGuard) @Post('token/access') generateAccessToken(@Headers('authorization') rawToken: string) { return this.authFacade.generateAccessToken(rawToken); } @ApiOperation({ summary: 'RefreshToken 갱신', description: 'RefreshToken으로 RefreshToken을 갱신합니다.' }) @ApiBearerAuth('bearer') @ApiOkResponse({ type: RefreshTokenResponse }) @IsPublic() @UseGuards(RefreshTokenGuard) @Post('token/refresh') generateRefreshToken(@Headers('authorization') rawToken: string) { return this.authFacade.generateRefreshToken(rawToken); } }
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌3)
순수 CSS 선택자 중첩(Nesting) - 활용예제 (로그인폼)관련 질문있습니다.
scss 작성하다가 궁금한 것이 있어 질문 남깁니다.scss를 작성할 때 띄어쓰기를 어떻게 해야할지 궁금합니다. 예를들어 .status { display: flex; justify-content: space-between; margin: 20px 0; & label { & input[type=checkbox] { display: none; +em { display: inline-block; width: 18px; height: 18px; background-image: url('images/icon-radio.png'); transform: translateY(4px); background-position: left; } &:checked+em { background-position: right; } &:checked+em+span { color: var(--mainColor); } } } & a:hover { text-decoration: underline; } } 선생님과 수업하면서 작성한 띄어쓰기 하지 않은코드인데요.이쁘게 정렬하고 싶어서 alt + shift + f 를 눌러서 전체 정렬을 했더니 .status { display: flex; justify-content: space-between; margin: 20px 0; & label { & input[type=checkbox] { display: none; +em { display: inline-block; width: 18px; height: 18px; background-image: url('images/icon-radio.png'); transform: translateY(4px); background-position: left; } &:checked+em { background-position: right; } &:checked+em+span { color: var(--mainColor); } } } & a:hover { text-decoration: underline; } } 이렇게 자동으로 띄어쓰기게 되더라구요.의미없는 띄어쓰기는 하지 않는게 좋다고 들었는데띄어쓰기를 하지 않으면scss nesting 특성상 괄호가 많아져서 알아보기 힘들고비주얼 단축키로 정렬했을 때엔 알아서 띄어쓰게 해주는데,scss는 어떤식으로 코드를 작성해야할지 궁금합니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
useEffect 가 정확히 언제 실행되는건지 헷갈립니다
강의를 다 듣고 뭔가 아직 useEffect의 개념이 명확히 잡히지 않았는데요..바뀐 state 값을 바로 이용하려고 할때, 컴포넌트가 렌더링된 후에 사용한다고 하셨는데그럼 만약 컴포넌트를 렌더링할때 바뀐 state값을 같이 렌더링해줘야 하는 경우에는 useEffect는 컴포넌트가 렌더링 된 이후에 사용하니깐 useEffect를 못쓰는건가요??여기서 useEffect가 컴포넌트가 렌더링 된 이후에 사용한다는게 모든 컴포넌트가 완전히 화면에 그려지고 나서 사용된다는 의미 맞나요??
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
15강 오류질문
15강 객체 강의 6분 let name = person.name;블록 범위 변수 'name'을 다시 선언할 수 없습니다라고 나옵니다
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
12.11 ) Home에서 getMontlyData 작성 중 오류 / 개발자도구 hooks Context 에서 객체가 아닌 함수로 출력됩니다
안녕하세요,강의 잘 듣고있습니다! 16분 쯤에 montlyData를 만들어서 호출하는 부분인데개발자도구로 체크해봤을때 hooks가 선생님처럼 나오지 않고 저런 함수 형태?로 출력이 되어서 그런지 오류가 나서 진행이 되지 않습니다ㅜ눈알빠지게 찾아봤는데도 잘 모르겠어서 글을 씁니다ㅠㅠ한번 체크 부탁드립니다 //App.jsx 파일입니다 const mockData = [ { id: 1, createdDate: new Date("2024-09-30").getTime(), emotionId: 1, content: '1번 일기' }, { id: 2, createdDate: new Date("2024-09-29").getTime(), emotionId: 2, content: '2번 일기' }, { id: 3, createdDate: new Date("2024-08-02").getTime(), emotionId: 3, content: '3번 일기' } ]; function reducer(state, action) { switch (action.type) { case 'CREATE': return [action.data, ...state]; case 'UPDATE': return state.map((item) => String(item.id) === String(action.data.id) ? action.data : item); case 'DELETE': return state.filter((item) => String(item.id) !== String(action.id)); default: return state; } } export const DiaryStateContext = createContext(); export const DiaryDispatchContext = createContext(); function App() { const [data, dispatch] = useReducer(reducer, mockData); const idRef = useRef(3); const onCreate = (createdDate, emotionId, content) => { dispatch({ type: 'CREATE', data: { id: idRef.current++, createdDate, emotionId, content, }, }); }; const onUpdate = (id, createdDate, emotionId, content) => { dispatch( { type: "UPDATE", data: { id, createdDate, emotionId, content, } }) } const onDelete = (id) => { dispatch( { type: "DELETE", id } ) } return ( <> <DiaryStateContext.Provider value={data}> <DiaryStateContext.Provider value={{ onCreate, onUpdate, onDelete }}> <Routes> <Route path="/" element={<Home />}></Route> <Route path="/new" element={<New />}></Route> <Route path="/diary/:id" element={<Diary />}></Route> <Route path="/edit/:id" element={<Edit />}></Route> <Route path="*" element={<Notfound />}></Route> </Routes> </DiaryStateContext.Provider> </DiaryStateContext.Provider> </> ) } export default App
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
리액트로 로그인 부분 처리하는데 질문이 있습니다.
리액트 강의를 듣고 스프링부트랑 연동해서 리액트 코드를 짜고 있습니다. 지금 로그인 부분 처리하다가 막혀서 정말 구글링도 해보고 며칠째 하다가 도저히 해결이 안돼서 질문 드립니다.지금 로그인처리가 되면 sessionStorage에 로그인 회원 정보를 담고 navigate함수를 이용해 Main컴포넌트로 보냈습니다. 근데 다른 컴포넌트들에서도 이 로그인회원 정보를 사용하기 위해 최상위컴포넌트인 App컴포넌트에서 sessionStorage.getItem()해서 state값에 저장하고 그걸 context로 하위 컴포넌트들에게 제공했는데 로그인되고 navigate함수로 Main컴포넌트로 가면 context로 저장한 state값이 null이 되고 새로고침해보면 state값이 잘 들어오더라고요ㅠㅠ 비동기함수인것과 관련있을까요??새로고침없이 컴포넌트에서 바로 state값을 이용하고 싶으면 어떻할까요? state값 이용해서 바로 화면에도 렌더링도 해야하는 상황입니다 ㅠㅠ강의와 관련된 내용은 아니지만 프로젝트를 혼자 만들다보니 잘 안되는 부분이 많아 질문드립니다 !
-
미해결mongoDB 기초부터 실무까지(feat. Node.js)
option usecreateindex is not supported 오류 나면은
await mongoose.connect(MONGO_URL); // 제거 하시고 사용 하세요 // 버전6부터 해당 옵션을 사용하지 않아도 돼요https://mongoosejs.com/docs/migrating_to_6.html(공식문서) 보세요. 참고하세요
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌2)
실전 반응형 웹사이트
안녕하세요! 항상 강의 재밌게 듣고 있습니다~제가 강의를 따라하며 제작한 실전 반응형 웹사이트(넷플릭스와 크롬 사이트)를 포트폴리오에 넣으려고 합니다. 그런데 현재 실제 사이트들과 디자인에 차이가 있어서, 강의에서 배운 이전 디자인으로 포트폴리오에 포함해도 괜찮을지 고민이 됩니다…
-
미해결Vue.js 시작하기 - Age of Vue.js
코드를 수정하고 브라우저의 Vue로 넘어가면 다운이 됩니다.
코드 반영 후에 Vue.devtool을 사용하기 위해 개발자 도구창을 키면 devtool의 기능들을 클릭할 수 없습니다. (프로그램 다운 느낌입니다)그래서 창을 닫고 새로고침으로 다시 진행해야 정상적으로 되는데 이 문제 해결방법이 없을까요?