反应挂钩更新对象

时间:2019-09-17 06:23:04

标签: javascript reactjs

当用户单击按钮时,我想更新我的对象,追加到数组元素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]}))
}

enter image description here

1 个答案:

答案 0 :(得分:3)

执行destinations:[ e.currentTarget.id]时,实际上是在覆盖现有数组。

您需要执行此操作

setFilter( prevState => ({
   ...prevState, 
   destinations:[ ...prevState.destinations, e.currentTarget.id ]
}))

Demo