这是我的减速机的样子:
export default function catalogReducer(state = initialState.catalogItems, action){
switch (action.type) {
case types.LOAD_CATALOG_SUCCESS:
return {
count:action.count,
products :[...state['products'],
action.catalogItems ?
[...action.catalogItems['products']]
:
[]
]
default:
return state;
}
}
我想做什么:
这是用于加载目录项的缩减器
项目来自分页api。
问题:
我希望状态参数应该将先前的状态关联但不是,它始终从initialState获取值,这是我在应用程序启动时初始化状态。
为什么?它的方法是什么?
基本上我需要通过pagination api返回完整的项目集,而不仅仅是products
数组中给定页面的产品。
我最后得到的只是上一次api调用的产品数组,因为state.products
总是初始化为空数组
另外,一般来说,我对在react和redux中处理分页api感到非常困惑,而且我找不到一个直截了当的例子。
方向将不胜感激。
这就是initialState.js文件的样子:
import cookie from 'react-cookie';
export default {
categories:[],
sessionId: cookie.load('sessionId') || '',
youMayLikeItems : [],
catalogItems: {'products': []}
}
//此文件用于集中存储中状态的初始化
答案 0 :(得分:4)
基本上,你需要记住,你不应该改变状态。
export default function catalogReducer(state = initialState, action) {
switch (action.type) {
case types.LOAD_CATALOG_SUCCESS:
return {
...state,
catalogItems: {
count: action.count,
products: [
...state.catalogItems['products'],
action.catalogItems ?
action.catalogItems['products']
:
{}
]
}
default:
return state;
}
}
您可以找到更多有用的示例here
最好在没有深层对象的情况下制作简单的状态(docs)并使用Immutable.js