묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨웹 개발자의 연봉을 올려주는 하이브리드앱 with Expo 프레임워크
typescript를 사용하는 이유
강의에서 Typescript를 사용하고 있는데, 정작타입은 제대로 안 잡고 넘어가는 경우가 많네요수강생 타겟이 초보라고 되어 있지만, 타입 에러가 방치돼 있어서 따라가기가 더 어려운 느낌이에요오히려 타입을 명확히 잡고 넘어갔으면 더 수월하게 진행됐을 것 같다는 생각이 드네요
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
섹션 6. 페이지 캐싱 - 동일한 fetch 요청을 다른 cache 옵션으로 데이터 패칭 하는 경우
안녕하세요 !섹션 6. 페이지 캐싱 강의를 듣고 루트(/) 페이지를 static page 로 만들어 보기 위한 실습 과정에서 app/layout.tsx 파일 내부의 모든 도서를 패칭하는 fetch 함수의 option에는 아무 옵션도 설정하지 않고 (Next15 버전 기본값은 no-store), 루트 페이지 내부의 동일한 데이터 패칭만 cache 옵션(force-cache)을 추가하여 데이터가 캐싱되도록 설정했습니다.이러한 과정 후 npm run build 를 통해 빌드 하니 루트 페이지가 정적 페이지(static page)로 빌드 되었습니다.정적 페이지가 되기 위해서는 동적 함수를 사용하지 않아야 하며, 데이터를 반드시 캐싱해야 되는데 동일한 url로 데이터 패칭을 보냈을 때 서로 다른 옵션을 사용하게 되면 request memoization으로 캐싱된 데이터force-cache 로 설정된 데이터)를 우선적으로 사용해서 정적 페이지로 동작하는 건가요?1번 과정에서 궁금한 점이 발생하여 이번에는 layout.tsx 페이지의 데이터 패칭 옵션을 강제로 cache : "no-store" 를 추가하여 빌드 를 진행했더니 빌드 가 정상적으로 완료되지 않고 오류가 발생하여 빌드가 완료되지 않는 문제가 발생했습니다. 동일한 url로 데이터 패치를 보낼 때 기본 값을 사용한 패치와 옵션을 추가한 패치가 있다면 옵션을 추가한 패치를 우선적으로 사용하고, 서로 다른 옵션은 추가할 수 없는건가요? (기존 build 파일인 .next 폴더를 제거하고 빌드하니 빌드가 성공적으로 동작했으며, 루트 페이지가 Dynamic page로 빌드되었네요.. 기존 빌드된 .next 폴더가 있을 때 2번 상황 처럼 동일한 fetch url에 옵션만 다르게 설정하여 빌드하니 오류가 발생한 이유를 모르겠네요..ㅎㅎ)dynamic page에서 dynamic params에 generateStaticParams 함수를 통해 params 값을 미리 전달하여 페이지를 만드는 경우, return 값으로 전달하지 않은 params의 페이지를 사전 렌더링 할 때 page router의 getStaticPaths의 fallback 옵션 blocking 처럼 동작하는 건가요?테스트 과정에서 발생한 문제들을 이해하고 싶은데 이해가 가지 않아서 질문 드립니다 ! app/layout.tsximport "./globals.css"; import Link from "next/link"; import style from "./layout.module.css"; import { BookData } from "@/types"; async function Footer() { const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book`, { cache: "no-store", } ); if (!response.ok) { return <footer>제작 @rekoding</footer>; } const books: BookData[] = await response.json(); return ( <footer> <div>제작 @rekoding</div> <div>총{books.length}권</div> </footer> ); } export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return ( <html lang="en"> <body> <div className={style.container}> <header> <Link href={"/"}>📚 ONEBITE BOOKS</Link> </header> <main>{children}</main> <Footer /> </div> </body> </html> ); }(with-searchbar)/page.tsximport BookItem from "@/components/book-item"; import style from "./page.module.css"; import { BookData } from "@/types"; const AllBooks = async () => { try { const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book`, { cache: "force-cache", } ); if (!response.ok) { throw new Error(); } const allBooks: BookData[] = await response.json(); return allBooks.map((book) => <BookItem key={book.id} {...book} />); } catch (error) { console.error(error); return <div>예상치 않은 문제가 발생했습니다.</div>; } }; const RandomBooks = async () => { try { const response = await fetch( `${process.env.NEXT_PUBLIC_API_SERVER_URL}/book/random`, { next: { revalidate: 3 }, } ); if (!response.ok) { throw new Error(); } const randomBooks: BookData[] = await response.json(); return randomBooks.map((book) => <BookItem key={book.id} {...book} />); } catch (error) { console.error(error); return <div>예상치 않은 문제가 발생했습니다.</div>; } }; export default async function Home() { return ( <div className={style.container}> <section> <h3>지금 추천하는 도서</h3> <RandomBooks /> </section> <section> <h3>등록된 모든 도서</h3> <AllBooks /> </section> </div> ); }
-
미해결실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트
단언문 순서에 따라 테스트 결과가 왜 달라지나요?
expect(screen.getByTestId('cart-icon')).toBeInTheDocument(); expect( await screen.findByRole('button', { name: 'Maria' }), ).toBeInTheDocument(); expect(screen.getByText('2')).toBeInTheDocument();영상의 테스트 코드는 통과하는데, 위와 같이 두번째와 세번째 단언문을 바꾸면 실패합니다. 왜이런가요?
-
미해결제로베이스부터 배우는 웹개발의 개념과 바이브 코딩
사업자 등록
토스페이먼츠에 실제로 결제를 달려면 사업자 등록을 하라고 하는데 유형 같은건 어떤걸 선택해야 할까요? 저는 결제 연동 방법은 이미 아는 상태에서 이런 구체적인 팁이 있을까 해서 수강했는데 없어서 여쭤봅니다.
-
미해결React Native with Expo: 제로초에게 제대로 배우기
이 코드는 왜 있는건가요?
import {Add commentMore actions 맨위에 이 코드가 있는데 이게 왜있는건가요?
-
미해결Next.js 15로 완성하는 실전 YouTube 클론 개발
ngrok 실행 안됨
ngork http --domain ----- 3000명령어 실행 시 해당 오류가 발생하면서 실행이 안됩니다 어떻게 해결하면 될까요?
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
React 컴포넌트 생성 시 속성 할당 필요 문제
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 프론트엔드 코스
완벽한 프론트엔드
안녕하세요.저는 현재 고농축 프론트엔드와 백엔드 강의를 모두 수강 중인데요,최근에 ‘완벽한 프론트엔드’ 강의가 새로 생긴 걸 알게 됐습니다.이미 고농축 강의를 수강 중인데도, 완벽한 프론트엔드 강의도 수강하는 게 도움이 될까요?그리고 ‘고농축 프론트엔드’와 ‘완벽한 프론트엔드’의 가장 큰 차이점이 궁금합니다.혹시 고농축 강의를 수강한 사람 입장에서 완벽한 프론트에서 꼭 들어야 하는 파트가 있다면 추천도 부탁드립니다!그리고 혹시 ‘완벽한 프론트엔드’ 강의에 대해 쿠폰을 받을 수 있는지도 문의드립니다.
-
미해결타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게
질문입니다.
강의에서 현업관련해서 interface 보다 type을 별도의 파일을 더 선호 한다고 하셨는데, interface보다 type이 선호되는 이유를 알고 싶습니다.
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
9.1 이미지 최적화(13:36)에서 webp로 바뀌지 않습니다.
https://github.com/kimyoda/Next.js15_-.git해당 깃 주소입니다!! 13분전까지 모든 세팅과 설정을 바꿨는데도, 계속 위와 같이 작동합니다.book/[id]/page.ts import Image from "next/image"; <div className={style.cover_img_container} style={{ backgroundImage: `url('${coverImgUrl}')` }} > <Image src={coverImgUrl} width={80} height={105} alt={`도서 ${title}의 표지 이미지`} />next.config.ts까지 강의와 똑같으나 위 화면처럼 계속 jpeg로 나오는데 도저히.. 이유를 못찾아서 문의드립니다!! import type { NextConfig } from "next"; const nextConfig: NextConfig = { /* config options here */ logging: { fetches: { fullUrl: true, }, }, images: { domains: ["shopping-phinf.pstatic.net"], }, }; export default nextConfig;
-
미해결한 입 크기로 잘라먹는 Next.js(v15)
vscode 확장 vscode-stlyedcomponent 적용 안되는 오류
안녕하세요. 지금 Next.js강의중 글로벌 레이아웃강의를 듣고있는데 css를 자동완성해주는 styledcomponent가 적용이 안되서 문의드립니다. 구글링을 통해 vscode-styled component의 버전을 낮춰보기도하고 typescripts에 버전을 낮추니 next.js가 적용이 안되어서 다시 돌려놓긴했는데 여전히 적용이 안돼서 뭐가 문제인지 몰라서 질문드립니다.혹시몰라 제가 설치한 모든 확장프로그램들을 보내드립니다.
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
gitHub 레파지토리 보면
왜 39강까지지만 push하구 그 이후 회차들은 push안했나요? 강의 수강회차별로 소스 싱크맞추어서 학습하면 도움이 많이 될텐데 강의별로 확인해셔서 소스 동기화 요청드립니다. 80강이면 80강 까자끝난 소스가 올라오면 되겠죠 ? 79강에서 80강 갔는데 ui가 바뀌어서 어떻게 환경을 잡아야할지 당황스럽습니다.
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
80강 수강중인데
80강 3분 08초에서 > 3분 09초로 넘어갈때 메모UI로 어떻게 바뀐건가요? 강의교안에 수정해야 될게 있으면 추가해주세요 / 이런사소한것도 신경안쓰고 강의를 올리십니까 ? 리액을 익히는게 목적인데 환경 잡느라 시간 다 날립니다. 추가영상 촬영해서 올려주시고 교안도 수정해주세요
-
미해결Next.js 15로 완성하는 실전 YouTube 클론 개발
dirzzle-kit push error
bunx drizzle-kit push 명령어 실행 시 이런 오류가 발생합니다.어떻게 해결해야할까요?
-
미해결React 완벽 마스터: 기초 개념부터 린캔버스 프로젝트까지
79 타이틀수정 강의중
78 삭제 강의 이후 79 타이틀 수정 으로 넘어 갈떄 home.jsx UI가 바뀌는데 그거에 대해 설명이 없네요 . 강의교안에 home.jsx 파일 올려주시고 / 영상에도 home.jsx 변경 하는거 추가해서 촬영 부탁드립니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
"Create-투두 추가하기" 강의에서 onKeyDown에 관련된 질문
"Create-투두 추가하기" 강의 11분쯤에 나오는 엔터로도 버튼 실행하기에 관해 질문이 있습니다. onKeyDown 함수를 추가하기전엔 input박스에서 한버튼을 꾹 누르고있으면 연속해서 값이 입력 되었었는데,강의와 같이 onKeyDown 함수를 추가하고 나면 한가지 키를 꾹 누르고 있어도 하나만 입력 됩니다.(ex. E버튼을 꾹 누르는 경우,"EEEEEEEEEEEEE" 이렇게 입력 되었었는데,onKeyDown을 추가하면 "E" 이렇게 하나만 입력됩니다.) 엔터로 버튼을 실행하면서한가지 키를 꾹 눌러서 연속적으로 값도 입력할 수 있는 방법이 있는지 궁금합니다. 감사합니다.
-
미해결처음 만난 리액트(React)
존재하지 않는 수업이라고 떠요
이라고 뜨고 첫번째 수업으로 이동도 되지않아요
-
미해결한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
5.8) State로 사용자 입력 관리하기 1
강의 6분쯤에 "" 으로 공백이었던 useState의 초깃값을 "이름"으로 바꿔주면서 value={name} 구문을 추가해주셨는데요, 공백일 때에는 같은 문자열임에도 해당 구문 없이도 잘 작동했는데 "이름"으로 설정했을 때에는 해당 구문이 필요한 이유는 무엇인가요? 지피티에 물어보니 Uncontrolled와 controlled input이라는 새로운 개념을 언급하길래 잘 이해가 안 되어 여쭤봅니다!
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
npm init이 안됩니다 ㅠ
해당 오류 발생하여 아래와 같이 power shell에서 RemoteSigned 으로 변경하였습니다..다른 방법이 있을까요 ㅠ
-
해결됨[코드캠프] 부트캠프에서 만든 '완벽한' 프론트엔드 코스
jQuery
[입중급] CSS&JS 마스터 수강 중 입니다.그런데 jQuery는 안배우는건가요?!안배워도 되는건지? 아니면 잘 사용 안해서 인지?궁금합니다!!