我的组件状态是对象的数组:
this.state = {
userFavorites: [{id: 1, title: 'A'}, {id: 2, title: 'B'}]
}
每次单击按钮时,我需要使用另一个对象更新我的状态,就像我在上面的状态中拥有的对象一样; 例如:{id: 3,title:'C'}。
如果我只是将它们连接起来并设置状态,最后一个对象仍然会被添加的对象更改。
我需要在这里使用展开运算符吗?
我的组件状态是对象的数组:
this.state = {
userFavorites: [{id: 1, title: 'A'}, {id: 2, title: 'B'}]
}
每次单击按钮时,我需要使用另一个对象更新我的状态,就像我在上面的状态中拥有的对象一样; 例如:{id: 3,title:'C'}。
如果我只是将它们连接起来并设置状态,最后一个对象仍然会被添加的对象更改。
我需要在这里使用展开运算符吗?
你应该这样做。下面是在React中将值或对象推入数组的最佳推荐方法。
this.setState( prevState => ({
userFavorites: [...prevState.userFavourites, {id: 3, title: 'C'}]
}));
若要将元素推到数组的开头,请按以下方式操作
this.setState( prevState => ({
userFavorites: [{id: 3, title: 'C'}, ...prevState.userFavourites]
}));
对于函数式组件
const [userFavorites, setUserFavorites] = useState([]);
setUserFavorites((prev) => [...prev, {id: 3, title: 'C'}])
有多种方法可以做到这一点。对于您需要完成的操作,最简单的方法是使用扩展运算符。请注意,item是要添加到userFavorites中的对象。
this.setState({
userFavorites: [ ...this.state.userFavorites, item ],
});
const userFavorites = [...this.state.userFavorites, {id: 3, title: 'C'}]
this.setState({ userFavorites })