我正在使用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正常运行,但调度不正常。
请帮助我
答案 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
。