【发布时间】:2019-08-02 23:06:55
【问题描述】:
我开始使用新的闪亮的 React Hooks 构建我的一些新组件。但是我在我的组件中使用了很多异步 api 调用,在获取数据时我还显示了一个加载微调器。所以据我理解这个概念应该是正确的:
const InsideCompontent = props => {
const [loading, setLoading] = useState(false);
useEffect(() => {
...
fetchData()
...
},[])
function fetchData() {
setFetching(true);
apiCall().then(() => {
setFetching(false)
})
}
}
所以这只是我对它如何工作的初步想法。只是一个小例子。 但是,如果父组件现在改变了一个条件,即该组件在异步调用完成之前被卸载,会发生什么情况。
在我在 api 回调中调用 setFetching(false) 之前,是否可以通过某种方式检查组件是否仍然挂载?
或者我在这里遗漏了什么?
这是工作示例: https://codesandbox.io/s/1o0pm2j5yq
编辑: 这里没有真正的问题。你可以在这里试试: https://codesandbox.io/s/1o0pm2j5yq
错误来自其他原因,因此使用钩子时,您无需在更改状态之前检查组件是否已安装。
使用它的另一个原因:)
【问题讨论】:
-
@fard 没有这个关于反应钩子而不是正常的反应生命周期方法
-
没有真正的区别,甚至答案都写在了钩子里
-
您能否明确说明为什么取消请求对您不起作用?您是否在其他地方使用这些数据?
-
so with hooks you don't need to cancel the asynchronous callback that's what it does automatically.这不会自动完成,我们必须自己进行清理。 (移除事件监听器,取消网络请求等)
标签: javascript reactjs react-hooks