setAnswers 에 함수가 들어가도 괜찮은건가요?
357
작성한 질문수 2
안녕하세요. 유익한 강의 감사합니다.
const useCurrentAnswer = () => {
const step = useStep();
const [answers, setAnswers] = useRecoilState(answersState);
const answer = answers[step];
const setAnswer = (newAnswer) => {
setAnswers((answers) => {
// 새로운 답변 렌더링 (answers 는 그냥 변수명 )
const newAnswers = [...answers]; // 기존 답변목록을 복붙함 (불변성의 법칙을 지켜라 / 기존 데이터는 건들지마..)
newAnswers[step] = newAnswer; // 새로 작성한 답변을 복붙한 배열에 넣어줌
return newAnswers; // 새로운 답변 목록 반환
});
};
return [answer, setAnswer];
};에서
answer - String / 답변
answers - String[] / 답변 목록
setAnswer - answer를 렌더링해주기위한 함수 / setAnswer(param) { answer = param }
setAnswers - answers를 렌더링해주기위한 함수 / setAnswers(param) { answers = param }
로 이해되는데 그렇다면 setAnswers에 함수가 들어가도 괜찮은건지 궁금합니다.
setAnswers((answers) => {
const newAnswers = [...answers];
newAnswers[step] = newAnswer;
return newAnswers;
});는 setAnswers(화살표함수) { answers = 화살표함수} 이고
answers는 화살표함수가 되는게 아닌가요?
answers는 함수가 되어 입력된값을 리턴해서 바로 answers에 할당되는건가요?
아니면
setAnswers에서 함수가 실행되어 리턴된 값이 answers에 할당되는 건가요??
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
setAnswers에 함수를 넣어도 괜찮습니다. React의 useState나 Recoil의 useRecoilState를 사용할 때, 상태 값을 갱신하는 함수를 파라미터로 전달할 수 있기 때문입니다. setAnswers((answers) => { … }) 부분에서 answers는 현재의 상태 값을 파라미터로 받아와서 새로운 값을 반환하는 함수입니다. 그리고 이 함수를 setAnswers에 전달하여 answers 상태 값을 갱신할 수 있도록 합니다.
즉, setAnswers((answers) => { … }) 부분이 실행되면 answers는 현재의 상태 값을 받아와서 함수 내에서 새로운 값을 계산하고 이 값을 반환하여 answers 상태를 갱신할 수 있게 됩니다. 따라서 setAnswers에 함수를 전달하여 상태 값을 갱신하는 것은 올바른 방법이에요.
이해에 도움이 되셨기를 바랍니다. 추가로 궁금한 점이 있으면 언제든지 물어보세요!
라우터 궁금사항
0
48
1
자료 Git Source 주소 ??
1
77
1
교육자료 소스 바로 실행시..
0
92
1
교육자료 소스 바로 실행시..
0
68
1
13-1, 13-2 질문
0
132
1
12-2. Recoil -> Jotai 변환 코드 공유합니다.
4
216
1
recoil error 나시는 분들 보세요
3
131
1
어려워요 뭔소리죠 대체
3
318
1
사진이 잘 안보여요.
0
159
1
반복문 사용법은 안알려주고 주의사항만 알려주시는거군요
1
248
0
hooks recoil불러오는 과정에서 src내부에 있는 파일이 안불러와집니다
0
126
1
제발 코드샌드박스 링크 좀 달아주세요....
2
538
2
App.js > QuestionBox > answers ={answers[step]}, QuestionBox.js > answer
0
141
0
4.2 React 렌더링 과정 에서 왜 컴포넌트가 두 번씩 호출될까요?
0
176
1
useEffect 관련 질문드립니다.
0
138
0
jotai로 변경했을 때 코드
0
438
3
리코일이 업데이트가 안된지 오래됐다고하네요
3
463
1
학습 링크
0
364
1
12-2 질문
0
663
3
5-1 학습링크
1
270
1
7-5. 메모 삭제 기능에 문제가 있습니다.
1
244
0
실습링크
0
326
1
2-6 구구단 배열 넣어서 출력시 질문
0
148
1
[2-1] 강의링크 메모용
4
925
1





