묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨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라고 출력되네요. 어떻게 수정해야 할까요...
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 클래스 개발2 Category 관련 실행 에러
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]엔티티 클래스 개발2 강의 Category 엔티티 클래스 까지 작성을 완료하고 JpashopApplication을 run 하는과정에서 에러가 뜨네요. 에러 내용은 다음과 같습니다.Caused by: org.hibernate.type.descriptor.java.spi.JdbcTypeRecommendationException: Could not determine recommended JdbcType for Java type 'jpabook.jpashop.domain.Category'구글링을 해도 해결 방법을 잘 모르겠어서 질문 남깁니다. 도와주세요 ㅠㅠCategoryItem
-
미해결Next + React Query로 SNS 서비스 만들기
react-query, zustand, redux-toolkit 중 강사님 선호도
위 3개가 동등 선상에 있는지는 모르겠습니다만, 강사님의 위 3개 혹은 그 외 중에서 강사님이 프로젝트하실때 선호하시는 라이브러리는 무엇인지 궁금합니다. 그리고 현업에서 대세 혹은 추세가 어떻게 되는지도 궁금합니다. ex) redux에서 요즘에는 다른곳으로 넘어가는 추세다 와 같은 ...
-
해결됨Three.js로 시작하는 3D 인터랙티브 웹
npm start 시 error가 발생합니다.
웹팩(Webpack) 살펴보기 강좌를 진행 중에 있습니다. node.js는 20.11.1 LTS를 다운로드받아서 설치했습니다. 여기서 서버를 구동하기 위해, 터미널에서 npm start를 입력하면 아래와 같은 에러가 발생하고 더 이상 진행되지 않습니다.어떻게 문제를 해결해야 할까요?
-
해결됨비전공자도 따라하는 워드프레스 홈페이지 제작
폰트 플러그인을 이용하여 바꿀때 권한이 없다고 안오락네요.
파일 을 업로드 하려고하는데 권한이 없다고 나오네요. 이럴땐 어떻게 해야하죠?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
반례를 못찾겠습니다.
다음과 같이 선생님 코드를 참고하여 구현했는데 어디서 틀렸는지 모르겠습니다. http://boj.kr/ff14d895e1de44258e860f9df1dc81d9 그리고 수업을 들을 때 문제 풀이가 감도 안잡히면 해설을 조금 보고 풀이를 해본 다음에 그래도 안되면 코드를 참고해서 구현하는데 이런 방식으로 들어도 될까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원등록 강의 - @NotEmpty
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님! 회원등록폼에서 @NotEmpty 어노테이션을 사용하려는데되지 않아서 의존성에 'org.springframework.boot:spring-boot-starter-validation'를 추가했습니다. 해당 기능이 흥미로워 spring-boot-validation의 공식 문서를 뒤져보려고 하니까https://spring.io/guides/gs/validating-form-input주소에는 @notnull만 있고 @notempty 어노테이션은 없더라구요..그래서 https://jakarta.ee/specifications/bean-validation/3.0/jakarta-bean-validation-spec-3.0.html자카르타 명세서로 찾아보니까 @NotEmpty가 나오는데 그러면 해당 어노테이션은 어디에 속하는건지 좀 헷갈리고, 해당 기능과 관련된 validation을 공부하려면 어떤 문서를 봐야하는지 모르겠어서 혼자 고생하다가 질문 드립니다..! 긴 글 읽어주셔서 감사합니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
광고를 보고나면 퍼즈가 풀리네요
카드선택 팝업창에서 새로고침-광고를 보고 나오면 "Resume Game"이라는 유니티 메시지가 뜨면서 팝업창이 띄워져있는데도 일시정지된 게임이 재개됩니다. 혹시 버그인지 아니면 의도를 하신건지 궁금해서 여쭈어 봅니다!
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다.
강의자료 부탁드립니다.sylbiaa@naver.com 입니다.
-
해결됨반응형 웹사이트 포트폴리오(Architecture Agency)
모바일 버전에서 메뉴 클릭 후 그 위치로 이동할 때 상단 영역
메인 페이지 모바일로 변경하는 부분까지 수강 잘 마쳤습니다.자세히 잘 설명해주셔서 감사해요.그런데 모바일 버전에서 메뉴로 해당 위치로 이동했을 때, 상단 영역 때문에 화면 윗부분이 잘려보이는 부분은 어떻게 해결해야 할까요?조금 윗부분으로 이동하는 방법이 없을까요?(혹시 제가 아직 못본 뒷부분 강의에 나와있다면 다 보지 않고 질문드려 죄송합니다!)
-
미해결도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
[ERD로 보는 스토리와 테이블이라는 등장인물]태그정보 테이블 설계관련
[ERD로 보는 스토리와 테이블이라는 등장인물](17:53) 부분관련 문의드립니다. 안녕하세요. db설계에 대한 개념이 별로 없어서 질문드립니다. 태그정보의 경우, 연재요일과 같이 실적성으로 만들어야 한다고 하셨는데요. 태그정보의 코드/태그정보 테이블외에 작품번호/태그정보 테이블을 추가로 만들어야 할 지, 아니면 연재요일 테이블과 같이 작품번호/태그정보 테이블 하나만 만들면 되는 것일까요? 그리고 연재요일 테이블과 같이, 이런 류의 테이블은 별도의 요일에 대한 정보(코드/요일)테이블이 따로 없이 바로 실적테이블 형태로 구성을 하나요?
-
미해결원어민처럼 쓰는 일상회화 필수동사
안녕하세요, 혹시 학습노트 자료는 어디서 받을수 있나요?
학습노트 자료를 받아서 공부해보고 싶은데 자료다운 페이지나 파일첨부된 강의 확인이 안되네요 ㅠ어디서 받을수 있을지 여쭤봅니다.
-
해결됨모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 2 - 랭체인(LangChain)으로 나만의 ChatGPT 만들기
RAG에서 Generator으로 어떤 데이터가 들어가는지 볼 수 있는 방법이 있나요?
안녕하세요, 다시 질문드릴 것이 있어 글 남깁니다. RAG에서 Retriever가 Generator에 보내는 데이터가 무엇인지 확인해보고 싶고, Generator에서도 중간에 어떤 데이터를 받는지 확인해보고 싶은데 가능한 방법이 있다면 알려주시면 좋겠습니다.. 아마 제가 보낸 쿼리에 대한 similarity search의 결과를 줄 것같긴한데,정말 generator들어가기 전에 어떤 데이터가 들어가는지 뜯어보고 싶어서요. 감사합니다.
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
화질이 계속 720p인데 1080은 안되는건가요?
계속 720p로 나와서 눈이 아픈데 1080p설정은 안되는건가요??
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
MonsterController Init()함수 호출이 이해가 잘 안갑니다
루키스님 강의보며 설계적인 측면에서 코드를 분석을 하고 있는데요.제가 알고 있는 Init()함수 사용은 맨처음 오브젝트가 생성되었을 때 Awake() 등에서 최초로 호출되어 GetComponent() 등 한 번만 수행할 수 있는 함수라고 생각을 하고 있습니다. 근데 코드를 보니 Monster는 디스폰됬다 다시 스폰될 때 SetInfo() 함수를 호출하고 SetInfo()함수에서 Init()을 다시 호출하고 있더라구요. 스폰될 때 마다 초기화 해주어야 하는 인자들 ex) CreatureState(상태) 등 과 한번만 해줘도 되는 것들 ex) GetComponent()을 Init()에 같이 묶여있어 매우 혼란이 온 상태입니다. Init()이 여러번 불린다면 bool 인자도 필요하지 않고 굳이 번거롭게 할 필요가 없다고 생각이 드는데요. 코드를 보다보면 부모의 Awake()에서 Init()을 호출하고 또 자식의 Awake()에서도 Init()을 호출하고 어떤데는 base.Init()만 하고 어떤데는 if(base.init() == false)해주고 같이 작성을 하셨는데 그 각각마다 다 어떤 이유를 가지고 하신건지 아니면 그냥하신건지 궁금합니다.
-
미해결[리뉴얼] SQL 베이스캠프
W3shcool 오류
현재 W3school로 강의 따라하고 있는 중인데 강의에 나온 구문을 똑같이 따라써도 안되는 기능이 너무 많아서 힘들어요.. 하나의 예시로, SELECT UPPER('hello world')와 같은 단순한 기능만 써도 Error in SQL:Undefined function 'UPPER' in expression 이런 오류가 나요ㅠ
-
해결됨자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
20강. 코틀린의 scope function 수강 중 질문
안녕하세요. 최태현님 오늘자로 해당 강의 다 수강완료하였습니다. 먼저 좋은 강의 제공해주셔서 감사하다는 말씀 드립니다.작은 질문을 하나 드리고자 하는데요. 강의 내용과는 다소 무관한 질문입니다.20강. 코틀린의 scope function 강의 중 11:25에 나오는 코드인데요.val person = personRepository.save(Person("최태현", 100))찾아보니 이러한 방식으로 Repository를 통해 저장한 인스턴스를 받아와 쓰는 형태의 코드를 꽤 작성하시는 거 같습니다. 다만 제가 의문인 것은 만약 JPA를 사용한다고 한다면 엔티티 매니저에 의해 영속화된 Person("최태현", 100)엔티티나 personRepository.save()를 통해 반환된 엔티티나 완전히 동일한 객체일탠데 왜 굳이 이렇게 코드가 작성되는지 궁금합니다. 🙂 val person = Person("최태현", 100) val person2 = personRepository.save(person) println(person.equals(person2)) // trueperson이나 person2나 엔티티 매니저에 의해 같은 객체일 것 같은데 말이죠. 한 줄로 간결한 코드를 만들기 위함일까요?너무 강의와 무관한 질문이라 결례를 범하는지는 모르겠습니다만 최태현님의 의견이 궁금하여 질문 남깁니다. 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-B 질문
안녕하세요 강사님, 코드 관련해서 질문이 있습니다.강사님께선 int &ret = dp[STR][INT]; if(ret != -1) return ret; 방식으로 코드를 작성하셨고,저는if (dp[strength][intelli] != -1) return dp[strength][intelli];방식으로 코드를 작성했습니다.그런데, 제 코드는 계속 오류가 납니다.어떤 부분에서 오류가 나는지 알려주시면 감사하겠습니다.http://boj.kr/4e74c937e8b440c3989b1cfcceb69f53
-
미해결웹 게임을 만들며 배우는 React
리액트에서 화살표 함수를 사용해야하는 이유
안녕하세요! 항상 좋은 강의 감사합니다.궁금한 점이 있어서 질문 남깁니다. 위 소스에서 onChange, onSubmitForm를 화살표함수를 사용하지 않았을 때 작동하지 않는 이유가 궁금합니다.. ㅠㅠ 일반함수의 this는 WordRelay 객체가 아니라 전역객체를 가리키고 화살표 함수는 WordRelay 객체를 가리키기 때문인건 알겠는데 왜 일반함수의 this가 WordRelay 객체가 아니라 전역객체를 가리키는 지 이해가 되지 않습니다.. 위 소스의 Test함수에서 state에 접근할 수 있는 걸로 보아 Dom이 그려질 때는 잘 작동하는 데 그 이후에는 뭐가 달라서 this 가 전역객체를 가리키게 되는 지 궁금합니다 ㅠ
-
미해결김영한의 실전 자바 - 기본편
메서드
Getter method 나 setter method 을 나누는 기준은 본인의 메서드가 포함되어 있는 class 내의 instance variables 를 변경시키느냐 마느냐에 따라 다른가요 ? 예로 public class Hello { private int result; public int method1() { result = (int)(Math.random() * 2) + 4; return result; }}우리는 Math.random() static method 를 accesor method 라고 부르나요? 아니면 mutator method 라고 부르나요 ?저는 Math.random 이 result 값 즉, 필드변수의 값을 변경시키는데 영향을 끼치고 있으므로 Mutator method 라고 생각했는데 이렇게 생각해도 괜찮나요?