Редуктор не обновляет реквизиты в компоненте правильно - PullRequest
0 голосов
/ 02 мая 2018

Мои комментарии исчезают из моего компонента после того, как 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 (корпус переключателя):

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 голосов
/ 02 мая 2018

Нижний код, который я разместил, - console.log - объект выглядит заполненным, а затем перерисовывается пустым

0 голосов
/ 02 мая 2018

Я не знаю, в чем здесь смысл mapKeys, но я бы сделал это, используя console.log, чтобы посмотреть, получаю ли я объект и под каким ключом находится массив comments:

case C.FETCH_COMMENTS_SUCCESS:
  console.log(action.payload.comments); // is this logging an array?
  return {
    ...state,
    loading: false,
    comments: action.payload.comments,
  };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...