강의

멘토링

커뮤니티

Inflearn Community Q&A

brmnmusic5054's profile image
brmnmusic5054

asked

[Renewal] Creating a NodeBird SNS with React

Split reducer

combineReducers사용할때 오류가 생겨요

Written on

·

532

0

에러는 TypeError: Cannot read properties of undefined (reading 'type') 이렇게 출력이 되고

해당 에러가 난 코드는 reducer/user.js의

const reducer = (state = initialState, action) => {
switch (action.type) {
case 'LOG_IN':

이부분 입니다

user.js, post.js에
if (action === undefined){return state}
를 추가해서 수정하려했지만

TypeError: Cannot read properties of undefined (reading 'isLoggedIn')

이렇게 추가로 오류가 발생합니다

어떻게 수정해야할까요..ㅜㅜ

reactexpressnodejsreduxNext.js

Answer 3

0

brmnmusic님의 프로필 이미지
brmnmusic
Questioner

combineReducers를 사용하기전까지(20강 수강까지)는 잘되었으나 해당부분을 사용하자 에러가 생겼습니다

zerocho님의 프로필 이미지
zerocho
Instructor

combineReducers 코드도 올려주세요.

brmnmusic님의 프로필 이미지
brmnmusic
Questioner

combineReducers 코드 입니다 

강사님과는 다르게 index부분이 회색으로 주석 쳐진것처럼 나와요

import {HYDRATE} from "next-redux-wrapper";
import {combineReducers} from "redux";
import user from "./user";
import post from "./post";
const rootReducer = combineReducers({
index: (state = {},action) =>{
switch (action.type){
case HYDRATE:{
return {...state,...action.payload}
}
default:{
return state
}
}
},
user,
post,
})
export default rootReducer
brmnmusic님의 프로필 이미지
brmnmusic
Questioner

brmnmusic님의 프로필 이미지
brmnmusic
Questioner

서버쪽 로그가 이게 맞는지는 모르겠으나

이렇게 나옵니다

zerocho님의 프로필 이미지
zerocho
Instructor

https://github.com/ZeroCho/react-nodebird/tree/master/ch3/front

이것과 비교해보셔야 할 것 같습니다. 제 생각에는 pages쪽에서도 호출을 잘못했거나 하는 경우가 있을 수 있습니다.

brmnmusic님의 프로필 이미지
brmnmusic
Questioner

넵 감사합니다 최후의보루로 가야겠네요ㅜㅜ

0

brmnmusic님의 프로필 이미지
brmnmusic
Questioner

제가 강사님 답변을 정확하게 이해하지 못해서 로그인 관련 코드를 올려보겠습니다

LoginForm.js 코드

const LoginForm = () =>{
const dispatch = useDispatch()
const [id, onChangeId] = useInput('')
const [pw, onChangePw] = useInput('')

const onSubmitForm = useCallback(() => {
console.log(id,pw)
dispatch(LoginAction({id,pw}))
},[id,pw])

----------------------------------------------------
user.js 코드

export const LoginAction = (data) => {
return{
type:'LOG_IN',
data:data,
}
}


const
reducer = (state = initialState, action) => {
switch (action.type){
case 'LOG_IN':{
return{
...state,
isLoggedIn: true,
user:action.data
}
}

이렇게 작성하였는데 강의를 돌려봐도 어디가 문제인지 잘 모르겠네요..

zerocho님의 프로필 이미지
zerocho
Instructor

로그인을 눌렀을 때 action이 undefined되는 것은 맞죠?

brmnmusic님의 프로필 이미지
brmnmusic
Questioner

npm run dev를 하면 화면에 Internal Server Error 고 나오면서 콘솔창에 status 500에러라고 나옵니다

TypeError: Cannot read properties of undefined (reading 'type') 이부분은 터미널에서 확했어요

brmnmusic님의 프로필 이미지
brmnmusic
Questioner

눌렀을때가 아니라 실행시키면 바로 오류가 생겨요

zerocho님의 프로필 이미지
zerocho
Instructor

서버 에러라서 서버쪽 에러메시지 확인하셔야 합니다.

0

zerocho님의 프로필 이미지
zerocho
Instructor

action이 undefined가 되는 것 자체가 문제인데요. 혹시 dispatch()만 하신 것 아닌가요? log_in 관련 코드쪽에서 찾아보셔야 합니다.

brmnmusic5054's profile image
brmnmusic5054

asked

Ask a question