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

Ko Yun Hyuk님의 프로필 이미지

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

credentials로 쿠키 공유하기

ADD_POST_TO_ME 질문있습니다.

작성

·

185

0

게시글을 추가할 때(ADD_POST)는 잘 됩니다.
그런데 ADD_POST_TO_ME 를 할 때 문제가 발생합니다.

1. me.Posts 에 id 값만 넣었을 경우

case ADD_POST_TO_ME:
console.log('action.data: ', action.data);
console.log('draft.me: ', state.me);
draft.me.Posts = action.data
break;

이 코드는 action.data를 통해 id 값을 잘 받아오는지 테스트를 위해 작성했습니다. 결과는 아래와 같습니다.

me.Posts가 생겼고 값으로 id값이 잘 들어갑니다.

그러나 문제는 unshift를 통해 넣었을때 발생합니다.

2. me.Posts.unshift({id: action.id})

case ADD_POST_TO_ME:
console.log('action.data: ', action.data);
console.log('draft.me: ', state.me);
draft.me.Posts.unshift({ id: action.data });
break;

위와 같이 작성할 경우 아래와 같은 에러가 생기며
ADD_POST_TO_ME action이 실행되지 않습니다.

reducer에서 문제가 생기는것 같은데.. 혹시 me의 상태가 객체여서 그런것일까요? 

문제가 무엇인지 파악하기 어려워 조언을 구합니다.

 

3. redux-saga (post.js)

function addPostAPI(data) {
return axios.post('/post', data);
// { title: data.title, category: data.category, content: data.content }
}

function* addPost(action) {
try {
const result = yield call(addPostAPI, action.data);
// console.log('result', result.data.id);
yield put({
type: ADD_POST_SUCCESS,
data: result.data,
});
yield put({
type: ADD_POST_TO_ME, // 사용자 본인의 POST에 추가
data: result.data.id,
});
} catch (err) {
yield put({
type: ADD_POST_FAILURE,
error: err.response.data,
});
}
}

결과 값(result)은 잘 받아옵니다.

 

참고: https://github.com/ko7452/e-Library/tree/master/prepare

답변 2

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

draft.me.Posts가 배열이 맞나요? 에러메시지가 뜨면 에러 위치를 한 번 눌러보세요. addPost$ 옆에 post.js:85:27 이렇게 위치가 잘 나와있습니다.

0

Ko Yun Hyuk님의 프로필 이미지
Ko Yun Hyuk
질문자

back/routes/user.js

늦은 시간 죄송하고.. 답변 감사합니다. include 문제였습니다..