我有一個物件陣列,當呼叫某個函式時,我想用新資料更新該物件陣列中的特定陣列。
這是電話:
const DataReducer = (state, action) => {
switch (action.type) {
case 'ADD_DATA':
return [...state, state[0].data:[...state, {id: Math.floor(Math.random() * 999),
name: action.payload.name,
}]];
}
}
問題是我不斷收到錯誤“',' Expected”,這出現在:資料之后我很確定這是正確的,但我正在使用背景關系 api 在 addName 時用新名稱更新一些現有狀態函式被呼叫。這應該傳播現有狀態并從 item[0].data 獲取特定狀態,向其中添加新名稱,但我似乎無法使其正常作業。
任何幫助,將不勝感激。
這是原始資料物件:[{title: 'Names', data: []}, {title: 'Meal', data: []}]
uj5u.com熱心網友回復:
打破這種回報可能更容易。制作狀態的副本,創建一個物件,然后將其添加到data陣列中,保留其中已經存在的所有物件。然后回傳副本以更新狀態。
const DataReducer = (state, action) => {
const { type, payload } = action;
switch (type) {
case 'ADD_DATA': {
const copy = [...state];
copy[0] = {
...copy[0],
data: [
...copy[0].data, {
id: Math.floor(Math.random() * 999),
name: 'Bob'
}
]
};
return copy;
}
}
}
const state = [{title: 'Names', data: []}, {title: 'Meal', data: []}];
const newState = DataReducer(state, { type: 'ADD_DATA', payload: { name: 'Bob' } });
console.log(newState);
uj5u.com熱心網友回復:
return [
{
...(state[0] || {}),
data: {
id: Math.floor(Math.random() * 999),
name: payload.name
}
},
...state?.slice?.(1)
]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/470984.html
標籤:javascript 反应式 反应上下文
