Reactjs 为什么';useEffect是否直接支持异步回调或为清理函数提供单独的参数?
我知道我不能直接将这样的异步回调传递给useEffectReactjs 为什么';useEffect是否直接支持异步回调或为清理函数提供单独的参数?,reactjs,asynchronous,Reactjs,Asynchronous,我知道我不能直接将这样的异步回调传递给useEffect useEffect(async () => { // not supported, as this implicitly returns a Promise const result = await axios( 'https://someurl', ); setData(result.data); }); as React不希望任何内容或(清除)函数回调作为useffect的第一个
useEffect(async () => { // not supported, as this implicitly returns a Promise
const result = await axios(
'https://someurl',
);
setData(result.data);
});
as React不希望任何内容或(清除)函数回调作为useffect
的第一个参数
但我不明白的是:选择这种设计有什么具体的原因吗?为什么没有像useffect(callback,cleanup,dependencies)
这样的签名,这样我就可以直接将异步回调作为第一个参数传入,因为cleanup函数可以很容易地作为第二个参数传入
但我不明白的是:有什么具体的原因吗
设计选择
我想到的原因之一是:。在react中,当您从useffect
返回函数时,它会执行取消订阅等操作,并且通常您可能需要从useffect
访问一些变量。例如:
useEffect(() => {
let cancelled = false;
fakeFetch(person).then(data => {
if (!cancelled) {
setData(data);
}
});
return () => {
cancelled = true;
}
}, [person])
使用您的设计,您将无法完成上述操作。这听起来很合理,谢谢:-)