我正在为我的react应用程序添加新功能,我想添加从任何地方(包括非react组件)记录日志的功能,所以我想从应用程序的任何地方调度一个操作。
问题是当我想从非组件文件调度日志操作时,我必须导入存储以访问调度方法,并且在某些情况下它会引发循环导入依赖错误。
文档建议在这个用例中使用中间件或think,但我不知道如何在我的用例中使用它们,因为要触发它们,首先需要调度一个操作。
现在,我有一个解决方案"工作"
// outside the component
let dispatch :AppDispatch;
// I can invoke this function from anywhere
export const addLogMessage = (message: ProgressMessage) => {dispatch(progressMessageAdded(message))}
...
...
// inside the component
dispatch = useDispatch();
但我认为这不是一个方便的方法…
在不导入redux存储的情况下,在反应组件外部调度redux操作的最佳解决方案是什么?在这种情况下,你必须使用选择器,这个特定的选择器将帮助你在另一个组件中使用它。