게시글을 추가할 때(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