Reducer不能正确更新组件中的道具

时间:2018-05-02 03:17:01

标签: reactjs redux

在didMount()初始化后,我的注释会从我的组件中消失?真的很奇怪!

反应组件:

componentDidMount = (post) => {
    const postId = this.props.post.id
    console.log('postpreview', postId)
    this.props.fetchComments(postId)
    console.log('postpreview comments:', this.props.comments)
  }

Redux操作:

  export const beginFetchComments = () => ({
  type: C.BEGIN_FETCH_COMMENTS,
})

export const fetchCommentsFailed = (error) => ({
  type: C.FETCH_COMMENTS_FAILED,
  payload: { error },
})

export const fetchCommentsSuccess = (comments) => ({
  type: C.FETCH_COMMENTS_SUCCESS,
  payload: { comments }
})

export function fetchComments(postId) {
  return dispatch => {
    dispatch(beginFetchComments());
    return fetch(`${api}/posts/${postId}/comments`, { headers })
      .then(
        res => res.json(),
        error => console.log('An error occurred at fetchComments', error)
      )
      .then(json => {
        dispatch(fetchCommentsSuccess(json));
        return json;
      });
  };
}

Redux Reducer(开关盒):

case C.BEGIN_FETCH_COMMENTS:
  return {
    ...state,
    loading: true,
    error: null
  };


case C.FETCH_COMMENTS_SUCCESS:
    console.log(action.payload.comments);
    const comments = _.mapKeys(action.payload.comments)
      return {
        ...state,
        loading: false,
        comments,
      };

控制台显示相同的console.log(),(我无法抓住我的道具!):

(2) [{…}, {…}]0: {id: "894tuq4ut84ut8v4t8wun89g", parentId: "8xf0y6ziyjabvozdd253nd", timestamp: 1468166872634, body: "Hi there! I am a COMMENT.", author: "thingtwo", …}1: {id: "8tu4bsun805n8un48ve89", parentId: "8xf0y6ziyjabvozdd253nd", timestamp: 1469479767190, body: "Comments. Are. Cool.", author: "thingone", …}length: 2__proto__: Array(0)

commentsReducer.js:22 [] 

2 个答案:

答案 0 :(得分:0)

我不知道mapKeys在这里的用途是什么,但我要做的是做一个console.log,看看我是否得到一个对象,在什么键下有一个{{1} } array:

comments

答案 1 :(得分:0)

我发布的底部代码是console.log - 对象显示已填充,然后重新呈现为空