可以将哪些数据类型传递给redux-thunk操作?

时间:2017-05-11 14:27:36

标签: redux redux-thunk

问题概述

我正在使用redux-form,它包装了我的compoent,并提供了一个属性 change(),这是一个用于更改表单的绑定函数。我想在actionCreator中调用它。

问题

我以为我可以将它传递给我的actionCreator thunk,但似乎在调度动作时会删除该值。

详情

所以我尝试了而不是发送绑定动作更改我尝试将指针发送到我的其他一个名为act.setFMEPATH的actionCreator,但这也无效。

在下面的第一张图中,我展示了在发生redux-action的调度之前变量的状态。从手表中可以看出,act.setFMEPath明确定义。

在第二张图片中,您可以看到输入时的操作状态。 defaultPath是define(它的作用域是堆栈上的闭包),但是storeAct。

在我的代码中,我很难编写STORE.dispatch(Act.setFMEPath(filePath [0]),因为参数storeAct不可见,但是我想要它STORE.dispatch(storeAct(filePath [0])< / p>

我是否应该将第一个参数的上下文绑定到dispatch()并将storeAct()转换为绑定函数(但请注意它是一个箭头函数,因此不起作用)。

通话前声明:

enter image description here

pickFile动作创建者的状态条目

enter image description here

2 个答案:

答案 0 :(得分:0)

调用pickFolder(即Act.pickFolder(Act.setSourcePath, defaultPath))的代码完全与redux-thunk无关。由于redux-thunk的工作方式,它会在redux-thunk发挥作用之前进行评估。

redux-thunk检查调度值是否为函数,如果是,redux-thunk使用dispatchgetStateextraArgument参数调用它。请check its source code,它非常简单。

基本上它意味着Radio所说的:如果它在pickFolder中未定义,因为它在调用者中是未定义的。另外,我在destination中看不到pickFolder的任何使用情况,因此请查看拼写错误。

答案 1 :(得分:0)

似乎redux对不计划javascript对象感到不满意。如上所示,当我尝试调度一个带有绑定函数调用的actionCreator作为参数时,在创建actionCreator时它就丢失了。

我还尝试创建一个将函数句柄(绑定函数)放入存储区的reducer,它没有存储,并删除了先前的值(占位符)。

我对@ Radio-的说法感到困惑,因为我看到的是redux不喜欢不是普通javascript对象的东西(作为调度调用的参数,或者作为reducer的值放置)在商店里。)