Reactjs 如果在异步操作完成之前数据已更改,是否需要取消setState操作?

Reactjs 如果在异步操作完成之前数据已更改,是否需要取消setState操作?,reactjs,react-hooks,Reactjs,React Hooks,如果我使用useState钩子来控制一些数据 [data, setData] = useState<any[]>([]) 但在Async1完成之前,基础数据是通过其他操作修改的 fetchData (){ setData(getDataFromDatabase()) } 因此,顺序是: deleteByIndex (starts) fetchData ( starts + finishes) deleteByIndex (finishes) 然后,我不希望dele

如果我使用useState钩子来控制一些数据

[data, setData] = useState<any[]>([])
但在Async1完成之前,基础数据是通过其他操作修改的

fetchData (){
    setData(getDataFromDatabase())
}
因此,顺序是:

 deleteByIndex (starts)
 fetchData ( starts + finishes)
 deleteByIndex (finishes)

然后,我不希望deleteByIndex更新数据,因为更新与新数据不再相关。那么,在存在争用条件的情况下,处理这种情况的最佳方法是什么呢?

解决方案是使用前一个钩子将新值与旧值进行比较,看看它们是否相同,然后再进行更新,如果不相同,则退出。

更具体地说,取消getDataFromDatabase,这样它就不会使用过时的数据到达setState。这个问题是管理副作用的LIB存在的众多原因之一——Redux传奇、Redux可观性等等。
 deleteByIndex (starts)
 fetchData ( starts + finishes)
 deleteByIndex (finishes)