这是我的减速器的样子:
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。
- 我需要将 api 的结果添加到现有列表中
产品
Problem:
我希望状态参数应该与先前的状态相关联,但不,它总是从初始状态获取值,这是我在应用程序启动时初始化状态的值。
这是为什么?有什么办法呢?
基本上我需要通过分页 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': []}
}
//该文件是集中存储store中状态的初始化
基本上,您需要记住您不应该改变状态。
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 http://redux.js.org/docs/basics/Reducers.html
另外,最好制作简单的状态(docs http://redux.js.org/docs/faq/OrganizingState.html)没有深层对象并使用 Immutable.js
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)