Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在react redux减速器内使用useDispatch()钩子?_Reactjs_React Redux_React Hooks - Fatal编程技术网

Reactjs 在react redux减速器内使用useDispatch()钩子?

Reactjs 在react redux减速器内使用useDispatch()钩子?,reactjs,react-redux,react-hooks,Reactjs,React Redux,React Hooks,我想从减速器上启动动作。该操作将设置/取消设置加载程序状态 这是我的减速机的一个例子 const ABC = reducerWithInitialState(initialState) .case(getABCAction.started, (state) => { const dispatch = useDispatch(); dispatch(setAppLoader(true)) return (state);

我想从减速器上启动动作。该操作将设置/取消设置加载程序状态

这是我的减速机的一个例子

const ABC = reducerWithInitialState(initialState)
     .case(getABCAction.started, (state) => {
         const dispatch = useDispatch();
         dispatch(setAppLoader(true))
         return (state);
     });
然而,它说这是一个无效的钩子调用


有什么解决办法吗?

罗汉,你在减速器内,你可以完全控制返回你想要的任何状态,你不必再调度任何动作,你可以“做”你想对状态做的任何事情。

罗汉,你在减速器内,你可以完全控制返回你想要的任何状态,您不必再分派任何操作,只需“执行”您想对状态执行的任何操作。

减速器不应分派任何操作。它应该是一个没有任何副作用的纯功能。此外,您提供的代码不是有效的javascript。并且不能在react组件外部使用挂钩。减速机不是react组件。@trixn我需要一种变通方法,允许我根据一些操作的“启动、完成、失败”状态设置/取消设置加载程序状态。上面的代码很糟糕,我需要一个解决方案,并且。一个减速机不应该分派任何操作。它应该是一个没有任何副作用的纯功能。此外,您提供的代码不是有效的javascript。并且不能在react组件外部使用挂钩。减速机不是react组件。@trixn我需要一种变通方法,允许我根据一些操作的“启动、完成、失败”状态设置/取消设置加载程序状态。上面的代码不好,我需要一个解决方案。同意。但是这里的问题是,我已经模块化了应用程序,这个减速机是为我的模块ABC设计的,所以你在上面看到的initialState只有这个模块的store state/slice。但是我的加载器值将在另一个模块的存储状态中设置。我想要一种方法来更新这个reducer中的存储状态。要么我需要将存储的整个状态作为初始状态传递,我不想这样做,因为这违背了我在模块级破坏redux的目的,要么必须有其他我还不知道的方法,所有reducer都接收所有操作,在您的另一个模块中,只需侦听您想要更改加载程序标志的任何操作。但这对于我的用例来说是一种过度杀伤力,因为我有100个API调用正在进行,并且我无法复制要在另一个减速机中显示/隐藏加载程序的操作。你能告诉我一个减速机的状态片在哪里,我需要在另一个减速机中访问它吗?你没有复制任何东西,你只是对另一个减速机中的操作(使用开关盒)做出响应。同意。但是这里的问题是,我已经模块化了应用程序,这个减速机是为我的模块ABC设计的,所以你在上面看到的initialState只有这个模块的store state/slice。但是我的加载器值将在另一个模块的存储状态中设置。我想要一种方法来更新这个reducer中的存储状态。要么我需要将存储的整个状态作为初始状态传递,我不想这样做,因为这违背了我在模块级破坏redux的目的,要么必须有其他我还不知道的方法,所有reducer都接收所有操作,在您的另一个模块中,只需侦听您想要更改加载程序标志的任何操作。但这对于我的用例来说是一种过度杀伤力,因为我有100个API调用正在进行,并且我无法复制要在另一个减速机中显示/隐藏加载程序的操作。你能告诉我一个减速机的状态片在哪里,我需要在另一个减速机中访问它吗?你没有复制任何东西,你只是对另一个减速机中的操作(使用开关盒)做出响应。