返回useEffect挂钩中的函数以外的值是否不好?

时间:2020-11-04 21:31:44

标签: reactjs react-redux react-hooks

这是我的代码段:

GCD(a, b) = GCD(b, a % b)

(1)我知道dispatch不会返回一个函数(但是不确定它实际返回的是一个promise吗?),因此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]); ... } 的输入将不会返回一个函数,因此不会进行清理/执行理论上

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

(3)我这样做是为了保存括号。

我的问题是,我做错了什么吗?

> useEffect的输入是否可以返回函数旁边的内容,并且如果不是函数(不是可执行文件),将使用useEffect useEffect吗?

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

1 个答案:

答案 0 :(得分:0)

如果您没有任何要清除的内容-您不返回函数,就可以了,是的,useEffect不在乎,您是否会返回函数。 Dispatch返回对象,useEffect将忽略它。 但是实际上可能会更棘手,调度返回值可能会改变! -https://github.com/reduxjs/redux/issues/754 这取决于您使用的中间件,并且每个中间件都可以使您的返回对象变幻莫测,某些中间件可能只返回一个函数,然后useEffect会在卸载时执行它-谁知道会发生什么,再次取决于在中间件上,它是内部逻辑。

因此,我建议使用方括号以确保安全。虽然仅针对此特定情况,但是当您使用dispatch