인프런 커뮤니티 질문&답변

스터디하쟈님의 프로필 이미지
스터디하쟈

작성한 질문수

리액트로 나만의 블로그 만들기(MERN Stack)

(21) Header(3) - Reducer Setting

리덕스!!

작성

·

197

0

강사님이 만든거 그대로 제가 따라해서 만들었어요

근데 엑시오스로 겟으로 줬을때 네트워크 보면 데이터가 나오는걸 확인 할수있는데 

useselector로 이용해서 스테이트에 쓰려 하니까

잘안됩니다. 콘솔로 찍어보면 언파인드로 나옵니다.

const base = useSelector((state) => state.config.site_copyright);

이렇게 하면 필드 한줄이 나와야하는데.. 뭐가 문제일까요?

아무리 해봐도 출력 안되고

state.config를 로그에 찍어서 보니까 좀 이상하게 나옵니다.

{base:""}

{base:undefined}

{base:{....}}

이렇게 나옵니다. 

그리고 제가 만드려는 의도는 그냥 홈페이지에 기본설정을 디비에 넣었는데 그걸 이용해서 그대로 출력 하고싶은데 어떤게 문제인진 모르겠네요 ㅠㅠ

답변 2

0

싸플님의 프로필 이미지
싸플
지식공유자

저 부분은 제가 강의에서도 한번 언급하긴 했는데... 저렇게 한번에 쑥~~~ 깊숙이 들어가면 undefined로 나옵니다.  이유는 값이 저장이 안되었기 때문입니다. 그래서 undefined가 나오는 것입니다. 

이건 console.log를 통해 테스트해보면 금방알 수 있습니다. 

이럴 경우는 강의처럼 state를 나누던가...

아니면, 제가 주로 쓰는 편법인데 전역변수를 활용하는 방법입니다. 

맨위에

let base = ""

선언해줍니다. 

그리고 그 아래에서 해당 base를 엑시오스를 통해 받아옵니다. 그리고 받아온 값을 base에 할당해줍니다. 

base = axios(~~~)

그리고 이 base를 리듀서에 저장합니다. 

이렇게 하면 useSelector로 통해 값을 가져올 수 있습니다. 

※ 핸드폰을 바꿨더니... 댓글 알림이 안와서.. 댓글이 달린지도 몰랐네요.. 죄송합니다. 

0

const {site_copyright} = useSelector((state) => state.config);

이런 방식으로도 해보셨나요?

사실 다른 방법으로 해결 했어요.. 여기 강사님 이젠 답변도 잘 안해주시고 이러니까..

급 후회됩니다. 매니저님한테 말하니까 주말에 달아주신다고 하는데 주말도 지나도 안달아주시고

그냥 저 혼자서 공부하려구요 

뒤쪽으로 가면 ckeditor 설정이나 다른 부분 막히는 곳도 있을텐데...

일단 모르는 부분은 질문 올려보세요

아니에요 ㅋㅋㅋ 이제 쪼금씩 잘 풀리기 시작해서~ 혼자 하려구요~ 

스터디하쟈님의 프로필 이미지
스터디하쟈

작성한 질문수

질문하기