开发者问题收集

如何更新 reactjs 中的对象数组

2020-09-10
131

我有一个状态(对象数组),如下所示:

 const [state,setstate]=useState({picture:'',name:'',job:''})

我在前端有 3 个输入,分别是图片、姓名、工作... 我定义一个数组来保存对象集合(包括每个人的图片、姓名和工作),如下所示:

 var colllection=[]

我使用 collection.push({state}) ,但它会覆盖集合,并且不会将新状态添加到上述数组的末尾。有什么想法吗?

1个回答

对于反应状态,您需要替换值而不是更改它。

因此,编写如下代码:

const [state, setstate] = useState([]);

const handleAddPerson = person => useState(prev => ([...prev, person]));

当我们想要添加一个人时,我们将状态设置为一个新数组,该数组包含原始数组的内容和新对象。

useState 而不是传递新值,可以传递一个函数,该函数以状态保存的先前值作为参数并返回状态的新值。

我习惯使用语法糖来创建一个新数组 [...prev, person] ,这可以用纯 JavaScript 写成 prev.concat([person])

Tom
2020-09-10