如何正确更新此Redux reducer中的状态

时间:2017-07-10 19:06:45

标签: reactjs react-redux

我有一个动作返回包含过滤对象的有效负载。我希望将此对象作为新状态或我要向用户显示的状态返回。

我所谈论的具体案例显示在以下代码中:

case Paginate_BLOG
   return {...state, action.payload.data};

我的博客减速器的完整代码:

import { FETCH_POSTS, FETCH_POST, DELETE_POST, PAGINATE_BLOG} from '../actions';
import _ from 'lodash';

export default function(state = {}, action) {
  switch(action.type) {
    case FETCH_POST:
      const post = action.payload.data;
      return { ...state, [post.id]: post};
    case FETCH_POSTS:
      return _.mapKeys(action.payload.data, 'id');
    case PAGINATE_BLOG:
      return {...state, action.payload.data};
    case DELETE_POST:
      return _.omit(state, action.payload);
    default:
      return state;
   }
}

所以基本上我试图在博客中使用redux来实现分页,将状态更新为我进入状态的原始博客集的子集。

1 个答案:

答案 0 :(得分:0)

认为你的意思是{...state, data: action.payload.data}

我甚至认为这不是有效的 - 但如果确实如此,那么我认为你正在返回一个新的状态,其中action.payload.data键的值为action.payload.data

{
  ...,
  data: // previous data,
  "action.payload.data": ...action.payload.data 
}