useDispatch 和 bindActionCreators 在项目中放在哪里?

Where to put useDispatch and bindActionCreators in a project?

我的问题是,我把上面提到的方法放在哪里?因为在我要使用Redux store的每个组件中,我需要基本上重复

的口头禅
import { useSelector, useDispatch } from "react-redux";
import { bindActionCreators } from "redux";
import * as actions from "../../redux/actions";

然后,例如,

const dispatch = useDispatch();
const { fetchStats } = bindActionCreators(actions, dispatch);

我看到有些人喜欢 containers 文件夹?

另外,你的文件结构是什么?你们把动作放在哪里?你如何导出它们?全部在一个文件中还是什么?在更大的项目中,它并不是很有效。

一如既往,提前致谢!

答案是,不要。

bindActionCreators 实际上只被 React-Redux connect 函数内部使用,通常不被应用程序代码使用。

今天,使用 React-Redux hooks API,我们建议您手动编写:

const dispatch = useDispatch();
const handleClick = () => dispatch(someActionCreator())

这样可以更明确地了解组件中实际发生的事情。

是的,这确实需要将挂钩导入组件。就像使用任何其他功能一样,这是有意且有必要使用它们的。

我们建议反对尝试分离“容器组件”,尤其是在您使用钩子时API。

至于逻辑,你应该使用"feature folder" file structure using Redux Toolkit to create one "slice" file per feature containing the logic