묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨Next + React Query로 SNS 서비스 만들기
로그인시에 response의 성공 유무를 떠나 await되는 이유
안녕하세요 제로초님 강의 수강중에 질문이 있어서요강의에 10분08초를 확인해보시면 response가 성공 실패 유무를 떠나서 await되버려서 catch로 넘어가지 않는 이유는 무엇일까요 ?로그인모달은 클라이언트에서 처리하고 회원가입은 서버액션으로 처리한다는 설명을 영상 후반부에 해주셨는데 이러한 경우와 연관이 있는 걸까요 ? 구글링해도 잘 확인이 안되어서요! 항상 감사합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
refresh token rotation 오류
안녕하세요 제로초님! 로그인 관련하여 질문드립니다!1) 백엔드에서 response로 넘겨주는 access token이 있어서 이걸 session에 넣어 api 요청할 때마다 헤더에 담아 인증 하려고 하는데요, 로그인 후 next-auth signIn함수를 통해 자동으로 authjs.session-token이 생성되는데 그럼 이 토큰은 언제 쓰이는 건가요? 백엔드에서 넘겨주는 토큰이 있어도 next-auth를 사용해도 되는 건가요?2) 로그인 기능과 관련해서 https://next-auth.js.org/v3/tutorials/refresh-token-rotation를 참고해 토큰 갱신 로직을 jwt callbacks 안에 구현을 해보았습니다. client 에서 session을 호출할 때마다 jwt callback이 실행되기 때문에 로그인 시 저장해 놓은 토큰(accesstoken)이 만료되었는지를 확인할 수 있다고 생각했고 위처럼 구현했습니다. 토큰이 만료가 되면 retun token대신 refreshAccessToken(token) 함수를 호출해 새로운 토큰을 return 해주었고, response도 정상적으로 옵니다.다만 jwt callback이 동시간대에 한번만 실행되는 것이 아니라 여러번 실행이 되고 있고, session callback에서도 업데이트된 token이 확인될거라 생각했지만, session callback에서는 예전 토큰이 조회가 되는 상황입니다. next-auth callbacks가 jwt -> session 순으로 호출되는 것으로 알고 있어서 jwt에서 업데이트된 token을 리턴해주면 session에서 이를 받을 거라고 생각했는데.. 왜 업데이트가 되지 않는 건지 궁금합니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
모달과 인터셉팅 라우트의 사용 기준
안녕하세요 선생님의 강의를 듣고 배워서 제 프로젝트에 적용시키고 있습니다.제 프로젝트는 naver map api를 사용해서 지도 서비스를 만드는 프로젝트인데요.지도위에 마커를 눌렀을 때 모달이 뜨는 기능을 구현하는 중 인터셉팅 라우트를 사용해야할지그냥 일반 모달을 사용해야할지 고민이 되서 질문드려요.인터셉팅 라우트를 써보고 싶긴하지만 제가 만들 기능엔 적합한 방법이 아니라 생각되는데제 생각이 맞는건지 확인하고 싶습니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
Context API 사용시 set함수 설정 관련해서 질문 드립니다.
제가 강의를 본 이후에 개인적으로 기능 따로 만들면서 일단 백엔드 공부가 안된 상태라, 간단히 제가 당장 필요한 것들은 할 수 있는 수준에서 사용하려고 포켓베이스라는 오픈소스 DB를 활용해서 진행하고 있는데요.로그인 관련 일부 컴포넌트 관련해서 여기서 보여준 context 기능을 적용하려고 강의 영상 참고해서logProvider.tsx는 아래처럼 적고"use client"; import PocketBase from 'pocketbase'; import {createContext , ReactNode, useState} from 'react'; const pb = new PocketBase('http://localhost:8090'); export const LogContext = createContext( { IsLogIn: pb.authStore.isValid, setLog: (log : boolean) => {}, }) type Props = {children: React.ReactNode}; export default function LogProvider({children}:Props) { const [IsLogIn, setLog] = useState(pb.authStore.isValid); return ( <LogContext.Provider value={{IsLogIn: pb.authStore.isValid, setLog: (log: boolean) =>{} }}> {children} </LogContext.Provider> ) }로그인 버튼 컴포넌트에서const LoginButton = () => { const [loading, setLoading] = useState(false); const router = useRouter(); const {IsLogIn, setLog} = useContext(LogContext); // const { isLoggedIn } = useContext(AuthContext); let logTest = pb.authStore.isValid; const handleClick = async () => { if (IsLogIn) { //로그아웃 실행 try { // console.log(IsLogIn); //기존에 로그인 된 상태라면 여기서 true pb.authStore.clear(); router.replace("/") //로그아웃 시 홈페이지로 이동 } catch (error) { console.error(error); } logTest = pb.authStore.isValid; setLog(pb.authStore.isValid); } else { //로그인 실행 setLoading(true); try { // console.log(IsLogIn); //기존에 로그아웃 된 상태라면 여기서 false const authData = await pb.collection('users').authWithOAuth2({ provider: 'google' }); console.log(authData); // 인증 데이터 확인 // 인증 데이터를 이용하여 사용자 정보 처리, 토큰 저장 등 로직 추가 } catch (error) { console.error(error); } finally { setLoading(false); logTest = pb.authStore.isValid; setLog(pb.authStore.isValid); //디버깅용 console.log("로그인 상태 확인") console.log(IsLogIn); console.log(pb.authStore.isValid); console.log(setLog) console.log(setLog(pb.authStore.isValid)); console.log(logTest); console.log(setLog(logTest)); } } }; return ( <div > <button className='logBox' onClick={handleClick} disabled={loading}> <img src="/Google.png" width={20} height={20} style={{ position: "absolute", opacity: 0.8, marginLeft:0, marginTop: 3}} /> <div className="flex-LogButton" > {IsLogIn ? '로그아웃' : (loading ? '로그인 중...' : ' 로그인')} </div> </button> </div> ); }; 이런 식으로 작성을 하였습니다. 그런데 버튼기능 마지막에 디버깅용으로 넣은 console값을 보니 로그인하면 로그인은 정상적으로 진행되는데 context로 공유하고 있는 IsLogIn 값은 바뀌질 않네요... 부모 컴포넌트에서 자식컴포넌트로의 공유는 제대로 되는것으로 보입니다. 자식에게서 부모로 가는게 setLog에서 타입문제로 입력이 안되는 듯 한데, 이건 그냥 제가 타입스크립트 개념이 약해서 타입 설정을 어떻게 할지 몰라서 생기는 문제 같네요;;아래는 디버깅용으로 넣은 7줄의 콘솔로그 기록입니다.로그인 상태 확인LogButtonSNS.tsx:52 falseLogButtonSNS.tsx:53 trueLogButtonSNS.tsx:54 (log)=>{}LogButtonSNS.tsx:55 undefinedLogButtonSNS.tsx:56 trueLogButtonSNS.tsx:57 undefined콘솔 로그 기록을 보면 logProvider.tsxsetLog: (log : boolean) => {}, 함수를 통해 boolean정보를 새로 넣어도 공유하는 IsLogIn의 value가 바뀌지 못하고 undefined라고 출력되네요. 어떻게 수정해야 할까요...
-
미해결Next + React Query로 SNS 서비스 만들기
react-query, zustand, redux-toolkit 중 강사님 선호도
위 3개가 동등 선상에 있는지는 모르겠습니다만, 강사님의 위 3개 혹은 그 외 중에서 강사님이 프로젝트하실때 선호하시는 라이브러리는 무엇인지 궁금합니다. 그리고 현업에서 대세 혹은 추세가 어떻게 되는지도 궁금합니다. ex) redux에서 요즘에는 다른곳으로 넘어가는 추세다 와 같은 ...
-
해결됨Next + React Query로 SNS 서비스 만들기
리액트 쿼리의 작동원리
암만 찾아봐도 이해가 안되는 부분이 있습니다.리액트 쿼리의 데이터 프리패치에 대한 질문입니다.제가 이해한 매커니즘은사용자가 페이지에 접속한다.리액트 쿼리 프리패치 코드를 가진 프론트서버에서 서버측으로 데이터 요청을 보낸다.데이터를 response받은 프론트서버에선 데이터를 html문서에 포함시켜 완성된 웹페이지를 서버에서 렌더링한다.완성된 웹을 사용자에게 전해주고, 프리패치된 데이터는 하이드레이션 시켜 캐시시킨다.(데이터를 사용자측면에서 재사용하기 위해) 이렇게 이해하는게 맞나요..?서버에서 데이터를 가지고 ssr을해서 사용자에게 보내주고, 그 데이터를 또 캐싱시킨다.? 그리고 하이드레이션 바운더리를 설정하는 위치에대한 규칙이 있나요? 어차피 하이드레이션 시키면 프로바이더안에서는 다쓸수있다면 모든 데이터관련 코드를 최상단 레이아웃에서 다 하이드레이션 시켜도 되는부분인가요?(물론 관심사 분리를 위해선 나누는게 좋을법하지만요) 그리고 리액트 쿼리에서의 하이드레이션과 next.js에서 ssr된 웹을 client에 js번들과함께보내주며 동적인 웹을만들기위해 하이드레이션 시킨다는 다른개념이다. 맞나요..?
-
해결됨Next + React Query로 SNS 서비스 만들기
context 사용법에 관해서
이 영상에서 보고 이해한대로 만들다가 잘 안되는 부분이 있어서, 제가 이해한게 맞는지 질문드립니다. 영상에서 provider랑 tap.tsx랑 어느 위치에 있든지 그건 상관없이 provider에서 쓰는 변수와 tap.tsx에서 쓰는 변수만 맞추고 page.tsx에서 필요한 부분에 <설정한 프로바이더> 태그만 위아래로 감싸면 되는것이 맞나요?
-
미해결Next + React Query로 SNS 서비스 만들기
modalBackground 미디어 쿼리에 modal에 들어가야 할 값이 들어가있는거 같습니다
수정 전수정 후
-
미해결Next + React Query로 SNS 서비스 만들기
seo 적용시 문제
현재 metadata 까지 동적으로 구성했는데sitemap.xml이 적용되지 않더라구요 ㅠㅠ공식문서에 나와있는대로 해당 경로에 가도 사이트맵이 생성되지 않았는데 따로 만드는 방법이 있을까요?sitemap.xml
-
해결됨Next + React Query로 SNS 서비스 만들기
fetch와 axios 차이점이 문득 궁금해졌습니다.
next.js에서의 fetch는 fetch api와 다른 것과, cache: 'no-store'를 사용하면 getServerSideProps를 사용한 것과 동일한 것도 이해를 했습니다. 근데 만약 fetch를 사용하지 않고 axios를 사용한다면 어떤 차이점이 있는지 궁금합니다.질문 : axios를 사용하면 next.js에서 어떻게 SSR 처리가 되는 걸까요? (next.js fetch를 쓰지 않는데 어떻게 SSR이 처리가 되는지)
-
미해결Next + React Query로 SNS 서비스 만들기
credentials provider 에서 서버로 부터 받아온 error message가 반환되지 않는 경우
안녕하세요 제로초님!강의 들으면서 개인 프로젝트에 적용 중입니다!현재 로그인 기능 구현을 시도하고 있고, 백엔드 API는 개인적으로 이미 구현이 되어있는 상황입니다.로그인 구현 방식은 강의 내용과 동일하게 진행하고 있는데요,아이디 또는 비밀번호가 틀렸을 때 authResponse.ok가 false로 반환되어 아래처럼 에러를 던져주고 있는데, 이 에러의 에러메시지가 터미널에서는 확인이 됩니다.근데 저 에러 메시지를 로그인을 요청하는(onSubmit 함수가 있는) 클라이언트 컴포넌트에서 확인을 하고 싶은데 next-auth signIn 요청시에 error로 잡히지 않고 res(정상응답)으로만 반환이 되고 있습니다.그리고 그 res를 콘솔에 찍어보면{error: 'CallbackRouteError', status: 200, ok: true, url: null} 로만 반환이 됩니다. 로그인이 정상적으로 이루어졌을 때는{error: null, status: 200, ok: true, url: 'http://localhost:3000/login'} 이렇게 반환이 됩니다.next-auth에서 Import해온 signIn 함수의 response 와 서버에서 받아온 errorMessage를 어디서 핸들링해야하는 건지 궁금하여 질문 드립니다.. 터미널에서 찍히는 errorMessage를 동일하게 signIn 함수의 error로 잡고 싶은데 가능한가요?
-
해결됨Next + React Query로 SNS 서비스 만들기
styled-components 적용중에 질문있습니다.
안녕하세요 강사님 강의 잘 듣고 있습니다! 항상 좋은 강의와 친절한 답변 감사드립니다.스타일 컴포넌트 적용 중에 궁금증이 생겼는데 검색을 통해서는 명쾌한 답변이 나오지 않아서 질문드립니다.아래 첨부 드린 코드와 같이 스타일 컴포넌트를 적용하려면 use client로 하고 page.tsx 에서 import 해서 사용해야 하는데혹시 이렇게 했을때 강사님이 사용하신 CSS Modules에 비해 안 좋은점이 있을까요?use client를 import해서 사용하다 보니 css modules에 비해 속도가 느리다던가서버 컴포넌트에 클라이언트 컴포넌트로 작성된 스타일을 적용시킴으로서 악영향이 있을까 걱정되어서 질문 드립니다.'use client' import styled from "styled-components" export const Container = styled.div` background-color: ${({theme}) => theme.color.blue2}; `;import { Container } from "./home.styles" export default function Home() { return ( <Container>안녕하세요</Container> ) };
-
해결됨Next + React Query로 SNS 서비스 만들기
styled-components 적용중에 질문 있습니다..
안녕하세요 강사님 강의 잘 듣고 있습니다! 항상 좋은 강의와 친절한 답변 감사드립니다.스타일 컴포넌트 적용 중에 궁금증이 생겼는데 검색을 통해서는 명쾌한 답변이 나오지 않아서 질문드립니다.아래 첨부 드린 코드와 같이 스타일 컴포넌트를 적용하려면 use client로 하고 page.tsx 에서 import 해서 사용해야 하는데혹시 이렇게 했을때 강사님이 사용하신 CSS Modules에 비해 안 좋은점이 있을까요?use client를 import해서 사용하다 보니 css modules에 비해 속도가 느리다던가서버 컴포넌트에 클라이언트 컴포넌트로 작성된 스타일을 적용시킴으로서 악영향이 있을까 걱정되어서 질문 드립니다.'use client' import styled from "styled-components" export const Container = styled.div` background-color: ${({theme}) => theme.color.blue2}; `;import { Container } from "./home.styles" export default function Home() { return ( <Container>안녕하세요</Container> ) };
-
해결됨Next + React Query로 SNS 서비스 만들기
로그인 로그아웃 기능 구현
클론코딩 무작정 하다보니 이 부분은 제가 제대로 이해하고 있는 기분이 들지 않아서 다 지우고 해당 기능 구현에 대해서 혼자서 코딩해보고 있는데, 막막하네요.제가 막무가내로 짠 코드 고쳐봤자 의미가 없어서 다시 생각해서 짜보려고 하는데, 어떤 어떤 부분을 순서대로 구현해야 하는지 핵심만 힌트로 알려주실 수 있을까요?
-
미해결Next + React Query로 SNS 서비스 만들기
login 시 http://localhost:9090/api/auth/error?error=CallbackRouteError로 리턴
LoginModal.tsx 클라이언트 컴포넌트에서 로그인 호출시http://localhost:9090/api/auth/error?error=CallbackRouteError 로 넘어가서 질문드립니다. (9090서버 열린 것 확인했습니다)비슷한 질문에 대한 답변에 버전 문제가 있어서 버전도 다시 설정해보았습니다.그런데도 여전히 로그인 함수 호출 시 http://localhost:9090/api/auth/error?error=CallbackRouteError 로 리턴되고 있어서요.터미널에는 아래와 같은 오류가 나옵니다..ㅜㅜ
-
미해결Next + React Query로 SNS 서비스 만들기
useQuery와 redux-toolkit은 같이 사용해도되나요?
[제로초 강좌 질문 필독 사항입니다]질문에는 여러분에게 도움이 되는 질문과 도움이 되지 않는 질문이 있습니다.도움이 되는 질문을 하는 방법을 알려드립니다.https://www.youtube.com/watch?v=PUKOWrOuC0c0. 숫자 0부터 시작한 이유는 1보다 더 중요한 것이기 때문입니다. 에러가 났을 때 해결을 하는 게 중요한 게 아닙니다. 왜 여러분은 해결을 못 하고 저는 해결을 하는지, 어디서 힌트를 얻은 것이고 어떻게 해결한 건지 그걸 알아가셔야 합니다. 그렇지 못한 질문은 무의미한 질문입니다.1. 에러 메시지를 올리기 전에 반드시 스스로 번역을 해야 합니다. 번역기 요즘 잘 되어 있습니다. 에러 메시지가 에러 해결 단서의 90%를 차지합니다. 한글로 번역만 해도 대부분 풀립니다. 그냥 에러메시지를 올리고(심지어 안 올리는 분도 있습니다. 저는 독심술사가 아닙니다) 해결해달라고 하시면 아무런 도움이 안 됩니다.2. 에러 메시지를 잘라서 올리지 않아야 합니다. 입문자일수록 에러메시지에서 어떤 부분이 가장 중요한 부분인지 모르실 겁니다. 그러니 통째로 올리셔야 합니다.3. 코드도 같이 올려주세요. 다만 코드 전체를 다 올리거나, 깃헙 주소만 띡 던지지는 마세요. 여러분이 "가장" 의심스럽다고 생각하는 코드를 올려주세요.4. 이 강좌를 바탕으로 여러분이 응용을 해보다가 막히는 부분, 여러 개의 선택지 중에서 조언이 필요한 부분, 제 경험이 궁금한 부분에 대한 질문은 대환영입니다. 다만 여러분의 회사 일은 질문하지 마세요.5. 강좌 하나 끝날 때마다 남의 질문들을 읽어보세요. 여러분이 곧 만나게 될 에러들입니다.6. 위에 적은 내용을 명심하지 않으시면 백날 강좌를 봐도(제 강좌가 아니더라도) 실력이 늘지 않고 그냥 코딩쇼 관람 및 한컴타자연습을 한 셈이 될 겁니다. 수업내용과 관계없이 궁금해서 질문드립니다.두개를 같이 사용했을 때 안 좋은 점이라던지 한가지만 사용해야된다면 그 이유가 궁금합니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
redirect를 false하는 이유가 서버쪽을 끈다 하였는데
이게 배포 지금 단계에서만 이렇게 하는 건가요?추후 강의에서 백엔드 완료 후 DB랑 연결하면 켜주는 건가요? 배포할 때도 키고요?
-
미해결Next + React Query로 SNS 서비스 만들기
타입스크립트
1분13초에 user 인터페이스를 확인하시던데 그런 인터페이스가 있는지와 어떻게 보시는지 팁이있을까요?
-
미해결Next + React Query로 SNS 서비스 만들기
sever Actions 사용하기 강좌 중 회원가입 양식 post 요청 응답없는 오류
서버 컴포넌트에서 Server Actions 사용하기 부분 수강 중에 오류가 발생하여 질문드립니다!회원가입 양식 작성 후 form action 요청 시 response에 아무런 응답이 없는데 원인을 모르겠습니다.. 터미널에서 아래와 같은 내용이 뜨긴 해요.저는 localhost:3002번으로 열었습니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
6:45쯤에 서버포트가 9090인 것에 대해 질문있습니다.
해당 포트가 9090인지 아닌지 어떻게 알 수 있나요? 어떤 환경이든 기본값이 9090인 것인가요?보통 코드 실행할 때 클라이언트 로컬호스트 번호는 3000인 것처럼요?그런데 실습에서 3000이 아니라 3001로 실행된것처럼 서버포트가 달라질 수도 있을까요? 그럴 때는 어떻게 확인해야하죠?