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];