javascript - 在 Redux reducer 中添加到无名数组之前

标签 javascript json reactjs ecmascript-6 redux

我从 API 获取对象数组,并通过 Redux 将其存储在 articleData 属性中。 prop 的存储方式如下:

articleData Prop

在我的 reducer 中,我想在该数组前面添加另一个 articleData 对象。我想要添加的对象存储在 action.articleData 中,但我找不到在不命名的情况下添加该数组的方法。这是我的 reducer 代码:

export function articleData(state = {}, action) {
    switch (action.type) {
        case 'ARTICLE_FETCH_DATA_SUCCESS':
            return action.articleData;

        //HERE IS THE PROBLEM!
        case 'ARTICLE_POST_NEW_ARTICLE_SUCCESS':
            return {arr:[action.articleData, ...state]} 

        default:
            return state;
    }
}

它成功地添加了新对象。 问题是:当我执行此代码时,它将状态从对象数组更改为名为“arr”的数组。参见图片:

enter image description here

我不知道如何在不命名的情况下添加到对象数组中。如果我从化简器代码中删除 arr: ,则会导致语法错误。

提前感谢任何愿意帮助我的人! :)

最佳答案

articleData reducer 的状态是一个数组。在 ARTICLE_POST_NEW_ARTICLE_SUCCESS 操作处理程序中,您创建一个新状态,它是一个对象,具有 arr 属性 - {arr:[action.articleData, ...州]}

而是返回一个包含新 articleData 的新数组,并将 state 传播到其中:

    case 'ARTICLE_POST_NEW_ARTICLE_SUCCESS':
        return [action.articleData, ...state] 

另外由于reducer的状态是数组,所以将初始状态改为空数组:

export function articleData(state = [], action) {

关于javascript - 在 Redux reducer 中添加到无名数组之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46836007/

相关文章:

JSON的C#自动属性反序列化

python - 使用 Django 的 ORM 和 Django Rest Framework 序列化嵌套关系的查询集的正确方法?

javascript - 在 React 中使用 redux-form 设置 <select> 默认值

javascript - 用于跨浏览器文件上传的 jquery 插件

javascript - 更改 CSS 类声明或实际将样式应用于每个元素?

java - Tomcat 上使用 Log4j2 的 Access.log 作为 JSON

node.js - 在 React 中开始使用 Material UI 的步骤

javascript - 使用单独的代码和 View 响应 native 明文输入

javascript - 如何在着陆页图形上添加鼠标悬停图像

javascript - 使用 ajax 调用进行 JSON 字符串化