在useEffect钩子中返回函数以外的值是否不好



这是我的代码片段:

import { useEffect } from 'react';
import { useDispatch } from 'react-redux';
import { someMethod } from 'components/actions';
const MyComponent = {
...
const dispatch = useDispatch();

useEffect(() => dispatch(someMethod), [dispatch]);
// Instead of: useEffect(() => { dispatch(someMethod); }, [dispatch]);
...
}

(1( 我知道dispatch不会返回函数(但不确定它实际上返回了什么,一个promise?(,因此useEffect的输入不会返回函数,因此不会发生清理/理论上执行

(2( 我知道如果useEffect的输入返回一个函数,它将用于清理,正如React-doc所说。

(3( 我这样做只是为了节省牙套。

我的问题是,我做错了什么吗?useEffect的输入是否可以返回函数旁边的东西,如果它不是函数(不可执行(,会使用Effectignore吗?

顺便说一句,我测试了我的代码,但没有发现任何错误,我的问题可能只与Best Practice有关,我查看了文档,也尝试查看React源代码,但未能找到任何有价值的信息。

如果您没有任何要清理的东西-您不返回函数,这是可以的,是的,useEffect不在乎,您是否会返回函数。Dispatch返回object,它将被useEffect忽略。但实际上可能更棘手,调度返回值可能会更改!-https://github.com/reduxjs/redux/issues/754这取决于您使用的中间件,每个中间件都可能使您的返回对象不可预测,有些中间件可能只返回一个函数,然后它将在卸载时由useEffect执行——谁知道会发生什么——同样,这取决于中间件及其内部逻辑。

因此,为了安全起见,我建议使用括号。尽管仅针对这种特殊情况,但当您使用dispatch

相关内容

  • 没有找到相关文章