![](/img/trans.png)
[英]redux - reducer — change property of an object within an array
[英]In redux reducer how to update 1 property inside array object
我有一個化簡器,它首先獲取沒有書本計數屬性的書本數組對象列表,然后為每本書獲取書本數
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方法是什么:我應該每次復制整個數組以及每個copysCount更新的所有對象時,還是應該只復制使用new屬性修改過的對象?
提前致謝
Redux僅要求如果數據有任何更改,則必須返回新的值實例,即,它強制不變性。 而且它不強制執行減速器的特定形式。 因此,您的問題實際上不是關於redux方法,而是關於如何以不變的方式執行數據轉換的一般javascript任務。
我認為您的代碼對於此特定任務絕對是正常的。
當前的updateBookCopiesCount
函數正確。 您需要復制需要更新的嵌套的每個級別,但只復制需要更新的嵌套。 因此,您需要復制state
(這是通過state.map()
,並且只需要復制數組中需要更新的一個對象。所有其他對象應按原樣返回。
有關更多信息,請參見Redux文檔的“ 構造化約化器-不可變的更新模式”部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.