React Native 不能使用 Spread Operator 来更新数组中的对象
React Native can not using Spread Operator to update object in array
我有控制 flatList 数据的状态
const [数据, setData] = useState([])
我有一个像下面这样的对象(从网络获取后,它在 FlatList 中显示成功)
data = [{
'name' : 1,
},
{'name' : 2,
}]
现在我想更新第一个对象 {'name': 1} 添加一些 key/value 之类的这个:
{ 'name' : 1, 'text' : 'this is text'}
这是我的代码:
const mathched = data[0]
mathched = [
...mathched,
{'text': 'this is text'}
]
但我得到错误:类型错误:“匹配”是只读的
我通过为对象设置新键尝试了其他解决方案:
const newData = [...data]
const mathched = newData[0]
mathched['text'] = 'this is text'
setData(newData)
但数据没有改变
有人可以指导我如何使用 Speard Operator 来完成我的解决方案吗?谢谢
问题是状态值是一个 read-only 变量,在本例中只能通过 setter、setData 进行修改。
当您执行 const matched = data[0] 然后 matched = newData[0] 时,您正试图在没有 setter 用法的情况下存储新值。
一种方法是:
// Usign for example Lodash clone
const newClonedData = clone(data);
newClonedData[0] = { ...matched[0], {'text': 'this is text'} };
setData[newClonedData];
我有控制 flatList 数据的状态
const [数据, setData] = useState([])
我有一个像下面这样的对象(从网络获取后,它在 FlatList 中显示成功)
data = [{
'name' : 1,
},
{'name' : 2,
}]
现在我想更新第一个对象 {'name': 1} 添加一些 key/value 之类的这个:
{ 'name' : 1, 'text' : 'this is text'}
这是我的代码:
const mathched = data[0]
mathched = [
...mathched,
{'text': 'this is text'}
]
但我得到错误:类型错误:“匹配”是只读的
我通过为对象设置新键尝试了其他解决方案:
const newData = [...data]
const mathched = newData[0]
mathched['text'] = 'this is text'
setData(newData)
但数据没有改变
有人可以指导我如何使用 Speard Operator 来完成我的解决方案吗?谢谢
问题是状态值是一个 read-only 变量,在本例中只能通过 setter、setData 进行修改。
当您执行 const matched = data[0] 然后 matched = newData[0] 时,您正试图在没有 setter 用法的情况下存储新值。
一种方法是:
// Usign for example Lodash clone
const newClonedData = clone(data);
newClonedData[0] = { ...matched[0], {'text': 'this is text'} };
setData[newClonedData];