Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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 动作必须是普通对象。使用自定义中间件_Javascript_Asynchronous_React Native_Redux Thunk - Fatal编程技术网

Javascript 动作必须是普通对象。使用自定义中间件

Javascript 动作必须是普通对象。使用自定义中间件,javascript,asynchronous,react-native,redux-thunk,Javascript,Asynchronous,React Native,Redux Thunk,会有什么问题? 未捕获错误:操作必须是普通对象。使用自定义中间件进行异步操作 配置存储: export default configureStore = () => { let store = compose(applyMiddleware(ReduxThunk))(createStore)(reducers); return store; } 行动 export const menulist = async ({ navigation }) => { return

会有什么问题?

未捕获错误:操作必须是普通对象。使用自定义中间件进行异步操作

配置存储:

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 })
    }
  }
}

你用错了方法

在Redux中,每个操作都必须返回一个对象,这是必须的! 因此,您的分派,这是一个函数,应该以这种方式调用

此外,您只需要声明async返回dispatch的函数。async关键字确定以下函数将返回承诺。由于第一个函数(menulist)将返回第二个函数(dispatch one)返回的承诺,因此不必指定它

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 })
    }
  }
}

你用错了方法

在Redux中,每个操作都必须返回一个对象,这是必须的! 因此,您的分派,这是一个函数,应该以这种方式调用

此外,您只需要声明async返回dispatch的函数。async关键字确定以下函数将返回承诺。由于第一个函数(menulist)将返回第二个函数(dispatch one)返回的承诺,因此不必指定它

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 })
    }
  }
}

正如您的错误明确指出的那样:动作创建者应该返回带有
类型
属性和可选负载的普通对象。在这里,您将返回一个接受
dispatch
参数的函数。正如您的错误明确指出的那样:操作创建者应该返回带有
type
属性和可选负载的普通对象。这里返回一个接受
dispatch
参数的函数。现在没有错误。但它不会进入街区。在试捕区内?它是否正确地连接在您的容器中?有错误吗?有。有人打电话来。但这似乎超出了问题的范围。无论哪种方式,如果没有更多信息,我都无法为您提供更多帮助,您是否尝试使用redux logger查看发生了什么?menuListByCategories调用不正确。谢谢它成功了,现在没有错误了。但它不会进入街区。在试捕区内?它是否正确地连接在您的容器中?有错误吗?有。有人打电话来。但这似乎超出了问题的范围。无论哪种方式,如果没有更多信息,我都无法为您提供更多帮助,您是否尝试使用redux logger查看发生了什么?menuListByCategories调用不正确。谢谢它起作用了。