会出现什么问题?
未捕获错误:操作必须是普通对象。使用自定义中间件进行异步操作。
配置商店:
export default configureStore = () => {
let store = compose(applyMiddleware(ReduxThunk))(createStore)(reducers);
return store;
}
动作
export const menulist = async ({ navigation }) => {
return async dispatch => {
try {
dispatch({ type: types.MENULIST_REQUEST_START })
let response = await menuListByCategories();
dispatch({ type: types.MENULIST_SUCCESS })
} catch (error) {
dispatch({ type: types.MENULIST_FAILED })
}
}
}
答案 0 :(得分:2)
你使用的方式错误,
在Redux中,每个动作都必须返回一个对象,这是必须的! 所以,你的调度,这是一个函数,应该这样调用。除此之外,您只需要声明异步返回dispatch的函数。 async关键字确定以下函数将返回promise。当你的第一个函数(menulist)返回第二个函数(发送一个)返回的承诺时,你不必指定它。
export const menulist = ({ navigation }) => async (dispatch) => {
try {
dispatch({ type: types.MENULIST_REQUEST_START })
let response = await menuListByCategories();
dispatch({ type: types.MENULIST_SUCCESS })
} catch (error) {
dispatch({ type: types.MENULIST_FAILED })
}
}
}