首页 > 解决方案 > 在 React Native 中调度 redux thunk 操作时未处理的承诺问题

问题描述

嗨,我很难让 redux thunk 动作在 React Native 中按预期工作。我在 React 中的一个应用程序中使用了完全相同的方法,它运行良好,但是我一生都无法弄清楚为什么它在我的 React Native 应用程序中不起作用,抛出一个未处理的承诺拒绝警告,破坏了我的代码。

我的登录功能如下:

this.props.loginUser(loginData)
            .catch(err => this.setState({
                errors: err.response.data.errors
            }))

并且已经连接到redux,如下:

export default connect(null, {loginUser})(Login)

loginUser 函数如下:

export const userLoggedIn = (user) => ({
    type: LOGGED_IN,
    user
})

const loginUser = (credentials) => (dispatch) =>
    api.user.login(credentials)
        .then(user => dispatch(userLoggedIn(user)))

export default loginUser

并向服务器发送 POST 请求:

export default {
    user: {
        login: (credentials) => 
            axios.post('http://10.0.0.103:3000/auth', {credentials})
                .then(user => user.data.credentials)
    }
}

所以一切都按预期工作,直到我尝试用动作调用调度。我已经包含了 thunk 中间件,我认为它会根据我的工作 React 应用程序允许所有这些,但是我收到 Unhandled Promise 拒绝:在这种情况下无法读取未定义的属性“数据”,这让我感到困惑。

感谢您提前提供任何帮助

标签: reactjsreact-nativereduxreact-reduxredux-thunk

解决方案


推荐阅读