Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 为什么';useEffect是否直接支持异步回调或为清理函数提供单独的参数?_Reactjs_Asynchronous - Fatal编程技术网

Reactjs 为什么';useEffect是否直接支持异步回调或为清理函数提供单独的参数?

Reactjs 为什么';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

  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])

使用您的设计,您将无法完成上述操作。

这听起来很合理,谢谢:-)