【发布时间】:2020-01-07 20:10:12
【问题描述】:
下面的示例显示了我对useEffect() 的使用如何导致多个Ajax 请求。在组件的初始渲染中,此请求会发出两次。如果标签被更改,则此请求会发出两次。
我可以使用某种内部状态变量来跟踪我是否已经获取。或者我可以创建一种堆栈,在其中推送某种类型的潜在请求,然后在返回之前弹出堆栈并运行最终请求。但所有这些似乎都是一个黑客。
(如果有帮助,应用程序会更大一些,而且我正在使用 redux。更广泛的解决方案是否类似于 redux-saga 的取消?)
const Thing => () => {
const [tagId, setTagId] = useState(null)
const [query, setQuery] = useState('')
useEffect(() => {
doSomeAjaxAndUpdateResults()
setQuery('')
}, [tagId])
useEffect(() => {
doSomeAjaxAndUpdateResults()
}, [query])
// ... bunch of extra effects with similar dependencies.
}
【问题讨论】:
标签: reactjs react-hooks