Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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
Javascript Redux-操作被调度,但不';我不能用减速器_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript Redux-操作被调度,但不';我不能用减速器

Javascript Redux-操作被调度,但不';我不能用减速器,javascript,reactjs,redux,Javascript,Reactjs,Redux,我遇到了一个奇怪的问题,我正确地调度了一个动作,但是没有调用减速机。我正在使用redux thunk,所有设置都与我的其他项目中的设置完全相同。动作类型匹配,但什么也没有发生 另外,如果我将console.log放在reducer的默认情况下,每次刷新页面时它都会被记录4次,因此我认为reducer加载正确 export const submitForm = names => { console.log(names); //This logs what it's supposed to

我遇到了一个奇怪的问题,我正确地调度了一个动作,但是没有调用减速机。我正在使用redux thunk,所有设置都与我的其他项目中的设置完全相同。动作类型匹配,但什么也没有发生

另外,如果我将console.log放在reducer的默认情况下,每次刷新页面时它都会被记录4次,因此我认为reducer加载正确

export const submitForm = names => {
  console.log(names); //This logs what it's supposed to log every time
                      // I press the submit button
  return dispatch => {
    dispatch({
      type: "SUBMIT_FORM",
      names
    });
  };
};

export default function form(state = {}, action) {
  switch (action.type) {
    case "SUBMIT_FORM":
      console.log(action.names);
      return Object.assign({}, state, {
        names: action.names
      });
    default:
      return state;
  }
}

//My component is connected like this: 
const mapStateToProps = state => ({});

const mapDispatchToProps = dispatch => ({
  formActions: bindActionCreators(formActions, dispatch)
});

export default connect(mapStateToProps, mapDispatchToProps)(Home);



对我来说,
动作创建者
返回函数似乎有点奇怪<代码>动作创建者通常
返回
动作,即
对象
<代码>异步操作创建者返回
函数
。因此,您可以尝试重构
操作创建者
,它将
返回objetct
,然后将操作创建者作为参数传递给调度

export const submitForm=names=>{
console.log(names);//这会记录每次应该记录的内容
//我按下提交按钮
返回{
键入:“提交表格”,
名字
}
};
派遣(提交表格(姓名));
此外,根据
mapDispatchToProps
中的使用
bindActionCreators
mapDispatchToProps
不返回对象,而是返回
bindActionCreators

const mapDispatchToProps=dispatch=>
bindActionCreators(格式、调度);
另一点,如果您需要将参数传递给您的
操作创建者
,我会这样做:

const mapDispatchToProps=dispatch=>({
submitForm:(名称)=>分派(submitForm(名称))
});

不幸的是,我看不到你所有的代码。我希望我帮了你一些忙。

console.log(action.names);请共享此行的结果。它不会记录任何内容。我也尝试了console.log(“test”),但它仍然没有记录任何内容。如果
reducer
在初始加载时加载,并且您遇到了这个问题,您可能需要检查
reducer
中的
action
参数console.log(名称)是否被调用,以及如何使用提交表单函数,如何连接组件?您需要将这些添加到问题中。如果我记录操作参数,将记录这些内容。我想这是对的?我正在使用名为
thunk
的中间件,它使返回函数而不是操作成为可能。调度是该库的一部分。我尝试只返回操作以排除中间件的问题,但没有成功。我知道
redux-thunk
。使用
redux thunk
可以返回
函数
而不是
对象
,并且该
函数
不需要像reducers函数那样纯粹。我说这很奇怪,无缘无故地使用
异步操作创建者。我希望现在对你来说已经足够了:)所有这些都很好,但它实际上与我的问题无关,也不能解决任何问题。我的应用程序的这一部分工作正常,而且一直都是这样。