Правильный способ обновления состояния в редукционных редукторах

Я новичок в редуксе и синтаксисе es6. Я делаю свое приложение с официальным уроком редукса, и с этимпример.

Ниже приведен фрагмент кода JS. Моя точка зрения - определить случаи REQUEST_POST_BODY и RECEIVE_POST_BODY в редукторе постов. Главное сложно - найти и обновить нужный объект в магазине.

Я пытаюсь использовать код из примера:

  return Object.assign({}, state, {
    [action.subreddit]: posts(state[action.subreddit], action)
  })

Но он использовал простой массив постов. Это не нужно, чтобы найти правильный пост по идентификатору.

Вот мой код:

  const initialState = {
    items: [{id:3, title: '1984', isFetching:false}, {id:6, title: 'Mouse', isFetching:false}]
  }

  // Reducer for posts store
  export default function posts(state = initialState, action) {
    switch (action.type) {
    case REQUEST_POST_BODY:
      // here I need to set post.isFetching => true
    case RECEIVE_POST_BODY:
      // here I need to set post.isFetching => false and post.body => action.body
    default:
      return state;
    }
  }

  function requestPostBody(id) {
    return {
      type: REQUEST_POST_BODY,
      id
    };
  }

  function receivePostBody(id, body_from_server) {
    return {
      type: RECEIVE_POST_BODY,
      id,
      body: body_from_server
    };
  }

  dispatch(requestPostBody(3));
  dispatch(receivePostBody(3, {id:3, body: 'blablabla'}));

Ответы на вопрос(2)

Ваш ответ на вопрос