我想在我的react本机应用程序中的redux中添加一个新对象。我使用拼接而且它不起作用。在redux中使用index插入项目的首选方法是什么?
答案 0 :(得分:3)
你有多种方法可以做到这一点。但是你应该避免使用诸如push,unshift,splice之类的方法,因为这些方法会改变违反反应哲学的状态。你可以check this link获取更多关于如何使用的信息更新redux商店。
您可以使用
function insertItem(array, action) {
return [
...array.slice(0, action.index),
action.item,
...array.slice(action.index)
]
}
所以从减速器中假设您(不确定减速器的定义方式)可以调用
return {...state, array: insertItem(state.array, action)}
考虑将项目插入array
属性。
如果你想使用splice,那么你需要使用slice
克隆数组,然后改变克隆数组,如:
function insertItem(array, action) {
let newArray = array.slice(); //Returns new array
newArray.splice(action.index, 0, action.item);
return newArray;
}
答案 1 :(得分:1)
如果要将新对象添加到特定索引处的数组而不改变数组,可以使用Object.assign
:
Object.assign([], array, {<position_here>: newItem});
如果你有2个元素并在index 3 instead of 2
添加一个对象,你会的
undefined
index 2
答案 2 :(得分:1)
var months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at 1st index position
console.log(months);
// expected output: Array ['Jan', 'Feb', 'March','April', 'June']
months.splice(4, 1, 'May');
// replaces 1 element at 4th index
console.log(months);
// expected output: Array ['Jan', 'Feb', 'March','April', 'May']