Manera correcta de actualizar el estado en reductores redux

Soy un novato en la sintaxis redux y es6. Hago mi aplicación con el tutorial oficial de redux, y con estoejemplo.

Hay un fragmento de JS a continuación. Mi punto: definir los casos REQUEST_POST_BODY y RECEIVE_POST_BODY en el reductor de publicaciones. Principal difícil: encontrar y actualizar el objeto correcto en la tienda.

Intento usar el código del ejemplo:

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

Pero usó una variedad simple de publicaciones. No es necesario encontrar la publicación correcta por id.

Aquí mi código:

  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'}));

Respuestas a la pregunta(2)

Su respuesta a la pregunta