안녕하세요, 강의 잘 보고 있습니다 😀 FormControl 컴포넌트 사용시 htmlFor prop 값 넘길 때 문자열을 중괄호로 감싸서 넘기는데요, "label" prop의 값은 문자열을 그냥 전달하는데, htmlFor의 값은 문자열을 중괄호로 감싸서 전달하는 이유가 뭘까요 ? 그냥 문자열만 보내면 안되는건가요 ?
안녕하세요 강의 잘 듣고 있습니다. 좋은 강의 만들어주셔서 감사합니다. 구글 애드센스의 경우 한 개의 구글 아이디로 여러 사이트에 등록이 가능한 것인지 궁금합니다. (각 사이트별로 승인을 받을 경우) 하나의 구글계정당 하나의 사이트만 등록이 가능한 경우 여러개의 구글 아이디로 사이트마다 애드센스를 붙여도 나중에 수익을 지급받거나 하는데 문제가 없을까요? 미리 감사드립니다.
안녕하세요 선생님. 좋은 강의를 정말 잘 듣고 있습니다ㅎㅎ [네비게이션관련 커스텀 훅] 강의에서 궁금한게 생겼는데요~ 쿼리 스트링에 page와 size가 있는데, moveToList에 파라미터로 page와 size를 전달해서 처리해야 하는 이유가 무엇인지 알 수 있을까요?
2.8 페이지별 레이아웃을 설정하는 방법을 듣고있는 학생입니다! getLayout이란 메서드를 레이아웃을 적용할 컴포넌트 객체에 생성해서 _app.tsx 파일에서 메서드를 통해 레이아웃을 적용시키는 방법이라는건 이해했습니다. 그런데 여기서 궁금했던 점이 특정 레이아웃을 적용하기 위해 페이지 마다 따로 코드를 작성해줘야 하는 방식이라면 그냥 레아이웃 컴포넌트를 적용시킬 컴포넌트의 최상위 요소로 감싸주는게 app.tsx에 추가로 코드를 작성할 필요도 없어 더 좋지 않나요? 그리고 리액트 라우터에서는 특정 레이아웃을 적용시킬 컴포넌트들을 <Route element={<Layout/>}><Route/> 이런 path가 없는 컴포넌트 안에서 감싸주는 방식을 사용하는걸로 알고 있습니다. 지금 배우는 방식보다 더 직관성이나 코드 길이 등에서 리액트 라우터가 더 좋은거 같은데 Next는 페이지별 레이아웃 설정방식이 getLayout로 설정하는것 밖에 없는건가요? 유지보수 할 때 특정 레이아웃이 적용된 페이지를 찾기 위해 getLayout을 사용한거라 보기에도 뭔가 애매하게 느껴지고 app.tsx에서 타입을 추가로 만들어줘야 해서 코드가 더 복잡해 보이는거 같습니다.
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다! [코드팩토리 디스코드] https://inf.run/54jjz - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 rotateToken(token: string, isRefreshToken: boolean) { const decoded = this.jwtService.verify(token, { secret: JWT_SECRET, }); 여기를 비롯해서 다양한곳에서 Unsafe assignment of an any value라는 오류가 뜨는데 강사님 영상에서는 따로 이런 에러가 발생하지 않더라고요. 혹시 강의에서 ESLint 설정을 약하게 해두신 건가요? 아니면 verify 결과에 타입을 명시해줘야 하는 건가요?
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다! [코드팩토리 디스코드] https://inf.run/54jjz - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 알려주신 decodeBasicToken() 함수를 그대로 구현했는데요, 다음과 같이 리턴을 명확히 하고 있음에도 불구하고, decodeBasicToken(base64String: string){ // 그냥 공식으로 외우면 됨 const decoded = Buffer.from(base64String, 'base64').toString('utf8'); const split = decoded.split(':'); if (split.length !== 2) { throw new UnauthorizedException('잘못된 유형의 토큰입니다.'); } const email = split[0]; const password = split[1]; return { // email: email, // password: password, email, password, }; } 에서 이 함수를 사용하면 TypeScript가 다음과 같은 에러를 표시합니다: Argument of type 'void' is not assignable to parameter of type ... 혹시 이 부분은 TypeScript의 일시적인 추론 문제일까요? 리턴 타입을 명시하니까 에러가 사라지긴 했는데, 강의에서는 따로 리턴 타입 없이도 문제없이 작동하던 것 같아서요! 혹시 제가 놓친 부분이 있는지, 아니면 단순히 타입스크립트 인텔리센스의 문제인지 궁금합니다 감사합니다!
안녕하세요! 이번 강의에서 동적 함수(쿠키, 헤더, 쿼리스트링)을 사용하는 컴포넌트가 포함된 페이지는 다이나믹 페이지라고 이해했습니다. 글을 찾아보니 middleware 에서 쿠키를 처리할 수 있다고 했습니다. 찾아보니 Middleware에서 쿠키를 처리할 수 있다 는 글을 봤는데, 이를 활용하면 동적 함수의 영향을 제거하여 정적 페이지로 만들 수 있는지 궁금합니다. 또한, 클라이언트 컴포넌트 측으로 뺴면 정적인 페이지로 만들 수 있는지 궁금합니다.
https://inf.run/h8zSF An error occurred in the <App> component. Consider adding an error boundary to your tree to customize error handling behavior. Visit https://inf.run/MNrmr to learn more about error boundaries. Error Component Stack at App (App.jsx:63:28) 라는 오류가 뜹니다
안녕하세요 로또 추첨기 공 뽑기(피셔 예이츠 셔플) 강좌 중 초반에 입력값 검사를 작성하는 도중 에러는 안 뜨는데 입력값에 1,2,3,4,5,6 을 쳤을 때 해당 조건에 맞지 않는데도 자꾸 검사에 걸려 alert가 뜹니다. 배열값이 잘못 들어가는 건가 싶어 console.log(myNumbers)로 값을 찍어봤는데 이게 문제가 아닌 것 같더라구요 바로 위 사진이 1,2,3,4,5,6을 입력했을 때 뜨는 창 사진이고 아래가 제가 해당 검사를 하기 위해 썼던 문장입니다. 어떤 게 문제인지 알 수 있을까요? console.log(myNumbers); if (myNumbers.filter((v) => v > 45 || v < 1)) { return alert("1부터 45까지의 숫자만 입력할 수 있습니다"); }
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다! [코드팩토리 디스코드] https://inf.run/54jjz - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이부분에서 Unsafe assignment of an error typed value.라는 에러가 나옵니다. /** * 파라미터 * * 1) 입력된 비밀번호 * 2) 기존 해시(hash) -> 사용자 정보에 저장돼 있는 hash */ const passOk = await bcrypt.compare(user.password, existingUser.password); if (!passOk) { throw new UnauthorizedException('비밀번호가 틀렸습니다.'); } return existingUser; } }
안녕하세요. 클라이언트 컴포넌트 안에, 서버 컴포넌트를 import 할 수 없다 라는 주의 사항에 대해 궁금한 점이 있습니다. Next.js 공식문서에는 아래와 같이 클라이언트 컴포넌트 안에 서버 컴포넌트를 직접 Import해 사용할 수 없다 고 나와 있는데요. 공식문서 강의에서 실습했을 때는, 클라이언트 컴포넌트 안에서 서버 컴포넌트가 사용되는 경우, 자동으로 클라이언트 컴포넌트로 바뀌는 것을 확인했습니다. 그렇다면, 서버 컴포넌트가 클라이언트로 바뀔 수 있는 경우는 해당 패턴을 사용해도 되는 건가요? 아래와 같이 서버 컴포넌트의 기능을 사용한다면, 에러는 나지 않지만 fetch 요청이 여러 번 되는 등, 정상적인 동작이 되지 않는 것을 확인했습니다. 이런 경우에 한해 지양하면 될까요? 결과적으로, 서버 컴포넌트가 클라이언트 컴포넌트로 바뀔 수 있는 경우, 제대로 동작하지만, 지양하자 는 것으로 이해하면 될까요? // 클라이언트 컴포넌트 "use client"; import ServerComponent from "@/components/server-component"; export default function ClientPage() { console.log("클라이언트"); return ( <div> <h1>클라이언트</h1> <ServerComponent /> </div> ); } // 서버 컴포넌트 export default async function ServerComponent() { const res = await fetch("https://jsonplaceholder.typicode.com/todos/1"); const value = await res.json(); console.log(value); return ( <h1>서버 컴포넌트</h1> ); } 감사합니다.
[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다! [코드팩토리 디스코드] https://inf.run/54jjz 제가 중간에 놓친건지 진행 프로젝트가 프로젝트가 Inflearn_actual에서 CF_SNS로 바뀐거 같은데 맞나요? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요! 다이나믹 페이지에서 데이터 패칭이 오래 걸리는 문제를 해결하기 위해, Next에서 임시로 로딩 UI를 보여주고, 추후 패칭이 완료되면 스트리밍으로 업데이트하는 것으로 이해했습니다. 로딩 UI는 데이터 패칭이 느릴 때 유용하지만, 패칭이 빠른 경우 오히려 깜빡거리는 느낌이 들어 사용자 경험 측면에서 안 좋을 수 있다고 느꼈습니다. 물론 제가 생각했을 때 가장 베스트는 API 속도를 측정하여 특정 시간 이상인 경우에 스트리밍 기술을 적용하고, 그 외에는 안하는 것이 좋다고 생각을 했지만, 측정하기도 힘들 뿐더러, 사용자 네트워크도 신경을 써야 하기 때문에 이러한 방법은 어렵다고 생각을 했습니다. 이러한 문제에서 강사님의 생각을 듣고 싶어 질문드리게 되었습니다.
안녕하세요! 클라이언트 라우터 캐시 기능에 대해 궁금증이 있어서 질문합니다. 클라이언트 라우터 캐시에 공통적으로 쓰이고 변하지 않는? 레이아웃들을 캐싱한다고 이해했습니다. 제가 궁금한 것은 RSC Payload는 수시로 바뀔 수 있을 것 같아 라우터 캐시에 저장하기 어렵겠지만, JS Bundle은 클라이언트 컴포넌트들로 구성되어 있다면 변하지 않으므로 캐싱해도 되지 않을까 생각을 해봤습니다.