3 回答
TA贡献1797条经验 获得超6个赞
在尝试对数组进行排序之前,请尝试创建该数组的副本。就像使用展开运算符一样。
arrayForSort = [...this.taskList]
然后排序后,您可以将其分配回该taskList
字段
TA贡献2041条经验 获得超4个赞
对于那些使用 React/Redux 遇到此错误消息的人,可能是您试图直接改变状态,这是不允许的。
就我而言,我有这样的设置来获取 thunk 中的状态(简化):
import store from "./myStore";
const state = store.getState();
const getItems = state => state.user.items;
const items = getItems(state);
// ↓ this blew up as it was attempting to manipulate `state`
items.sort((a, b) => a.order - b.order);
这是通过以下方式为我解决的:
import store from "./myStore";
const state = store.getState();
const getItems = state => state.user.items;
// ↓ in my case items is an array, so I create a new array by spreading state here
const items = [...getItems(state)];
// ↓ which means we're not manipulating state, but just our `items` array alone
items.sort((a, b) => a.order - b.order);
TA贡献1846条经验 获得超7个赞
我在做一个nextjs项目时遇到了这个确切的错误。当我收到此错误时,我将 a 放在findIndex一个对象数组上,尝试将新的键值对添加到数组的特定对象中。所以我只是这样做了:
const arrayOfObjects = [...someOtheObj.originalArrayKey]
const index = arrayOfObjects.findIndex((obj)=>{
// I had some conditions here
})
arrayOfObjects[index] = newValue
正确的
const arrayOfObjects = [...someOtheObj.originalArrayKey]
错误的
const arrayOfObjects = someOtheObj.originalArrayKey
添加回答
举报