redux:调度不起作用

时间:2018-08-22 08:10:59

标签: reactjs redux react-redux

我正在使用Redux开发一个React应用 我将动作写在一个单独的js文件中,如下所示

FeatureModule

然后我用下面的代码映射它们

function getCity(city,dispatch) {
  fetch('https://################', {
    method: "GET",
    headers: {
      "user-key": "#############",
      "Content-Type": "application/json",
    },
  }).then((res) => {
    return res.json()
  }).then((data) => {
    console.log(data.location_suggestions);
    dispatch({type:'getting_cities', city:data.location_suggestions});
  })
}

console.log正常运行,但调度不正常。

请帮助我

2 个答案:

答案 0 :(得分:1)

解决方案似乎很简单:
您忘记在调用操作的代码段中将path: path.resolve(__dirname, 'build'), dispatch一起发送

getCity

答案 1 :(得分:0)

我建议您查看有关Async Actions的redux文档,尤其是Async Action Creators section

尝试以下操作:

function getCity(city) {
  return function (dispatch) {
    return fetch(...)
      .then(res => res.json())
      .then(data => dispatch({ ... }));
  }
}

您还可以使用更酷的箭头语法。这是等效的。

function getCity(city) {
  return dispatch => 
    fetch(...)
      .then(...)
      .then(...);
}

别忘了导出函数,因为它位于单独的文件中。

现在要在主文件中分派动作创建者:

import { getCity } from '...';

store.dispatch(getCity('berlin'));

如果您使用React,请确保使用connect