如何解决我是redux的新手并做出反应,我正在尝试更新REDUX存储中的嵌套状态,但无法对其进行排序
我在哪里想念?请帮助解决此问题_ / _ 我无法正确更新redux存储状态而不会中断
这是我在发布数据之前处于Redux存储状态的当前状态
next state Object {
"highlights": Object {
"errMess": null,"highlights": Array [],"isLoading": true,},"posts": Object {
"errMess": null,"isLoading": false,"posts": Array [
Object {
"__v": 0,"_id": "5f37c3ebc8cb6a46c89bc33c","by": Object {
"_id": "5ed8d7fcfd3da42bc426992a","name": "mad","username": "mad","content": "this is first post","contentWarn": false,"createdAt": "2020-08-15T11:15:55.986Z","flaged": false,"heading": "first pot","report": 0,"updatedAt": "2020-08-15T11:15:55.986Z",],}
然后使用reducer ====>
执行添加新发布操作export const posts = (
state = { isLoading: true,errMess: null,posts: [] },action
) => {
switch (action.type) {
case ActionTypes.UPDATE_POSTS:
return {
posts: state.posts.posts.concat(action.payload),};
default:
return state;
}
};
这是返回的错误
action Object {
"payload": [TypeError: undefined is not an object (evaluating 'state.posts.posts.concat')],"type": "UPDATE_POSTS_FAILED",}
undefined is not an object (evaluating 'state.posts.posts.concat')
* Redux\posts.js:24:13 in posts
这是我想要发生的结果
next state Object {
"highlights": Object {
"errMess": null,Object {
"__v": 0,"content": "this is second post","heading": "second post",}
],}
解决方法
您的减速器应具有以下两个级别的结构:
export const posts = (
state = {
highlights: {
errMess: null,highlights: [],isLoading: true,},posts: { isLoading: true,errMess: null,posts: [] },action
) => {
switch (action.type) {
case ActionTypes.UPDATE_POSTS:
return {
...state,posts: state.posts.posts.concat(action.payload),};
default:
return state;
}
};
并尝试保持状态相同的数据结构,如高亮显示!
, return {
...state,posts: state.posts.concat(action.payload),}
这个减速器起作用了 注意:我在单独的文件中使用高光还原器
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。