在React FC中,直接在异步回调内部获取反模式吗?
在组件卸载后将setState
称为 可以吗?
const Component = () => {
const [state, setState] = useState("");
const onClick = e => {
// What if the component unmounts before setState?
fetch("url").then(response => response.json()).then(json => setState(json))
}
return <button onClick={onClick}></button>
}
答案 0 :(得分:2)
如果需要在安装组件时调用api并获取数据,请使用useEffect
如果要在onClick事件上调用它,请使用useCallback。
如果在setState之前卸载组件,它将不会破坏您的应用程序,但会在控制台中出现错误,因为在已卸载的组件中调用了set状态。 (可选)为避免这种情况,您可以在卸载组件时取消api调用。