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。
我的问题是,我把上面提到的方法放在哪里?因为在我要使用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。