7.6 createReviewAction 서버 액션 컴포넌트에 state 값을 넘기는 것에 관한 질문입니다.
🚨 아래의 가이드라인을 꼭 읽고 질문을 올려주시기 바랍니다 🚨
질문 하시기 전에 꼭 확인해주세요- 질문 전 구글에 먼저 검색해보세요 (답변을 기다리는 시간을 아낄 수 있습니다)
- 코드에 오타가 없는지 면밀히 체크해보세요 (Date와 Data를 많이 헷갈리십니다)
- 이전에 올린 질문에 달린 답변들에 꼭 반응해주세요 (질문에 대한 답변만 받으시고 쌩 가시면 속상해요 😢)
질문 하실때 꼭 확인하세요
- 제목만 보고도 무슨 문제가 있는지 대충 알 수 있도록 자세한 제목을 정해주세요 (단순 단어 X)
- 질문의 배경정보를 제공해주세요 (이 문제가 언제 어떻게 발생했고 어디까지 시도해보셨는지)
- 문제를 재현하도록 코드샌드박스나 깃허브 링크로 전달해주세요 (프로젝트 코드에서 문제가 발생할 경우)
- 답변이 달렸다면 꼭 확인하고 반응을 남겨주세요
- 강의의 몇 분 몇 초 관련 질문인지 알려주세요!
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
7.6 createReviewAction 서버 액션 컴포넌트에 state 값을 넘기는 것에 관한 질문입니다.
강의 8분 35초 쯤에, state를 넘긴다고 하셨는데, 함수 내에서 사용하지 않는데 굳이 왜 넘기는 것인가요? 감사합니다.
답변 2
0
안녕하세요 이정환입니다.
이는 React의 useActionState 훅의 내부 동작 때문에 그렇습니다.
useActionState는 dispatch 함수가 호출될 때, 액션 함수(ex. createReview 등 ...)를 호출하면서 인수로 현재의 State 값과 FormData를 전달합니다.
예시와 함께 다시 이야기 하자면, 다음 코드에서 dispatch 함수가 호출될 경우 useActionState가 자동으로 action 함수를 호출하면서 인수로 state와 formData를 넘겨준다는 말 입니다.
const [state, dispatch, pending] = useActionState(action, null)그리고 이런 동작은 React의 내장 Hook인 useActionState의 동작이므로 우리가 직접 수정할 수 없습니다 ㅠㅠ 따라서 어쩔 수 없이 useActionState와 함께 서버액션을 사용할 때에는 첫번째 매개변수로 현재의 State 값을 전달받도록 설정 해 주셔야 합니다.
쉽게 딱 한문장으로 정리하자면 호출하는 쪽에서 그렇게 호출하기 때문이라고 할 수 있겠네요 😃
0
안녕하세요, 인프런 AI 인턴입니다. wldls317님.
강의 내용을 바탕으로 한 질문 주셔서 감사합니다. createReviewAction 컴포넌트에서 state를 넘기는 이유와 그 의미에 대해 궁금하셨군요.
일반적으로, 컴포넌트에 state를 넘기는 이유는 해당 state가 그 컴포넌트에서 사용되거나 영향을 미치기 때문입니다. 그러나, 경우에 따라서는 state 자체가 직접 사용되지 않더라도, 하위 컴포넌트가 외부 변화에 대응해야 하는 상황을 만들 수 있습니다. 여기에는 다음과 같은 이유가 있을 수 있습니다:
Side Effect 관리: 특정한 state가 변경되면 서버 액션에서 부수적인 작업이 필요할 수 있습니다. 이 때 state가 변경 사항을 감지하는 트리거 역할을 할 수 있습니다.
State Propagation: 상위 컴포넌트에서 하위 컴포넌트로 state를 전달하여 데이터 흐름을 따라가는 패턴을 유지하고, 이후 해당 state를 사용하거나 추적할 수 있습니다.
코드 확장성 및 유지보수: 비록 현재 함수 내에서 직접 사용되지 않더라도, 코드가 확장되어 나중에 해당 상태를 이용할 가능성이 있다면 미리 준비해 두는 것이 보다 유연한 코드를 작성하는 방법일 수 있습니다.
관련하여 자세한 설명과 답변을 보시고 싶다면 React에서 useCallback과 React.memo의 사용 기준을 참고해보시면 좋습니다. 이 질문은 상태와 props에 관한 최적화 및 그 사용 사례에 대해 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
풀라우트캐시 동작 원리에서 데이터 캐시 관련 질문
0
52
2
next.js 프로젝트
0
50
1
Next.js + Tanstack Query BFF 구조 질문
0
47
2
Next.js 사전렌더링 이해하기 부분
0
52
2
모달 관련 질문
0
56
3
렌더링 관련 질문
0
92
2
중복으로 하나의 api를 요청할 때 캐싱 옵션 통일화
0
78
2
라우트 세그먼트 옵션 강좌 노트에 사소한 제보 남깁니다.
0
76
2
SSR시 context에 params말고 query를 사용하면 안되나요?
0
90
2
npx prisma db push 시 에러가 뜹니다.
0
107
3
vercel 배포를 실패하였습니다.
0
119
3
Image 컴포넌트 사용시 브라우저 콘솔에 경고는 왜 뜨는걸까요?
0
73
2
getServerSideProps 함수와 SSR의 관계
0
87
6
없는 페이지인데 풀라우트캐시로 저장이 되는 이유가 궁금합니다
0
70
2
실제 프로젝트에서 SSR 사용에 관해서 질문드립니다.
0
123
2
일반적인 nextjs project architecture에 대하여..
0
97
2
2.14 Search에서 작성한건 static이긴하지만 CSR이 아닌가요?
0
82
2
배포 시 오류 발생
0
97
2
백엔드 서버 오류납니다.
0
95
2
취약점 제거시 nestjs 버전 문제가 생길까요?
0
102
1
eslint.config.mjs 내 rules 어떻게 설정 하나요?
0
113
1
[book]/[id]/page.tsx 모달 띄울 때 성능 하락 현상은 ReviewList를 불러오면서 발생하는 문제 같습니다.
0
69
2
빨간줄 설정
0
87
2
익스텐션 질문
0
64
1





