当用户单击按钮时,我想更新我的对象,追加到数组元素ID。但是,当我将数据添加到数组时,它将覆盖所有对象,而不保存以前的数据。我通过了prevState回调,但是没有用。
const [filteredObject, setFilter] = useState({destinations:[],season:[],difficulty:[],price:'',is_exclusive:'',duration:''});
if (e.currentTarget.name==='destinations') {
setFilter(prevState=>({...prevState, destinations:[ ...prevState.destinations, e.currentTarget.id]}))
}
答案 0 :(得分:3)
执行destinations:[ e.currentTarget.id]
时,实际上是在覆盖现有数组。
您需要执行此操作
setFilter( prevState => ({
...prevState,
destinations:[ ...prevState.destinations, e.currentTarget.id ]
}))