javascript - 在 redux reducer 中如何更新数组对象内的 1 个属性

标签 javascript reactjs redux react-redux immutability

我有一个 reducer ,它首先获取没有书籍副本数属性的书籍数组对象列表,然后为每本书获取副本数

const bookList= (state = [], action) => {
    switch (action.type) {
        case 'BOOKS_REQUEST_SUCCEEDED':
            return Object.assign({}, state, action.payload);
        case 'BOOKS_COUNT_REQUEST_SUCCEEDED':
           return updateBookCopiesCount(state, action);
        default:
            return state
    }
}

const updateBookCopiesCount = (state, action) => {
   const newState = state.map((book) => { // updating only the book copies count
        if (book.Id === action.payload.Id) {
           return { ...book,
               copiesCount: action.payload.copiesCount 
           };
        }
        return book;
   });
   return newState;
}

我的问题是,正确的 redux 方法是什么: 我应该每次复制整个数组以及每次copyCount更新的所有对象,还是只复制使用新属性修改的对象

提前致谢

最佳答案

Redux 仅要求您在数据发生任何更改时必须返回新值实例,即它强制执行不变性。 并且它不会强制您的 reducer 的特定形式。 因此,您的问题实际上不是关于 redux 方法,而是关于一般的 javascript 任务如何以不可变的方式执行数据转换。

从我看来,您的代码对于这个特定任务来说绝对是正常的。

关于javascript - 在 redux reducer 中如何更新数组对象内的 1 个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321690/

相关文章:

javascript - 数组修改

javascript - 将纬度、经度和 zoomLevel 转换为 latitudeDelta 和 longitudeDelta

javascript - 搜索时键入一个符号后 TextInput 失去焦点

javascript - 使用 casperjs 或新浏览器登录时网站要求输入验证码

javascript - jQuery .load on image 触发一次

javascript - 使用 getSelected() 获取所选文本的范围 ID

reactjs - VS 代码中未显示 react-hooks/exhaustive-deps

javascript - ReactJS 和公共(public)文件夹中的图像

javascript - 无法读取未定义的属性 'rejected' | ReactJS

javascript - Redux 存储为 immutable.js 映射