这是我的代码段:
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的输入是否可以返回函数旁边的内容,并且如果不是函数(不是可执行文件),将使用useEffectuseEffect
吗?
顺便说一句,我测试了我的代码,但是没有发现任何错误,我的问题可能仅与ignore
有关,并且我检查了文档,并尝试查看React源代码,但未能找到任何有价值的信息。
答案 0 :(得分:0)
如果您没有任何要清除的内容-您不返回函数,就可以了,是的,useEffect
不在乎,您是否会返回函数。
Dispatch
返回对象,useEffect
将忽略它。
但是实际上可能会更棘手,调度返回值可能会改变! -https://github.com/reduxjs/redux/issues/754
这取决于您使用的中间件,并且每个中间件都可以使您的返回对象变幻莫测,某些中间件可能只返回一个函数,然后useEffect
会在卸载时执行它-谁知道会发生什么,再次取决于在中间件上,它是内部逻辑。
因此,我建议使用方括号以确保安全。虽然仅针对此特定情况,但是当您使用dispatch