😲 dispatch는 비동기가 아니니까!
그런데 왜 ... 표시가 안 되냐고.
console.log("초기:", initData); //초기값
await dispatch(templateActions.setInitData(await fetchInitData()));
console.log("나중:", initData); //초기값
-> dispatch가 redux를 업데이트 하기 전에 콘솔2가 먼저 찍힌다.
아래처럼 selector를 한번 더 정의해서 값을 업데이트해주면 된다고,
console.log("초기:", initData);
await dispatch(templateActions.setInitData(await fetchInitData()));
const updatedInitData = useSelector(state => state.template.initData);
console.log("나중:", updatedInitData);
-> 함수 내에서 이루어질 땐? 최상단이 아니라 useSelector를 못 쓰잖아!
-> useState를 따로 만들어서 사용해야 할까?
-> 클로저 문제 방지를 위해 그냥 값을 전달해야 할까?
dispatch(templateActions.setInitData(await fetchInitData()));
useEffect(()=>{
if(initData) console.log("나중");
},[initData]
해당 값을 감시하는 useEffect 내에서 값 수정 후 발생해야 하는 기능을 넣어 해결.
이러한 useEffect연쇄에 대해 부정적인 글을 본 적이 없지만, 긍정적인 글도 본 적 없다.🤔 남용은 하지 말아야겠다.