【问题标题】:Error handling with redux-thunk, react native使用 redux-thunk 处理错误,反应原生
【发布时间】:2021-01-20 11:19:08
【问题描述】:

我正在使用 redux-thunk 在我的 react-native 应用程序中使用 redux 设置。这是简单的登录操作

export const doLogin=(request, onSuccess, onError)=>{
return dispatch=>{
    console.log(request)
    axios.post(`/AppUser/LoginValidation`, request).then(res=>{
        console.log(res.data)
        if(res.data.isSuccess=== true){
            dispatch({
                type:LOGIN,
                payload:{
                     auth_token: res.data.authToken,
                     responseResult: res.data.responseResult,
                     loggedIn: true
                }
            })
            onSuccess && onSuccess();
        }else{
            dispatch({
                type: ERROR,
                payload: res.data.message
            })
            onError && onError();
        }
    })
    .catch(err=>{
        console.log('err',err )
    })
}

}

这样我就在前端使用了上面的代码:

 props.doLogin(data,()=>{
        action.setErrors({password: props.errorMsg})
        // action.resetForm();
        // setMobileno(null)
        props.navigation.navigate('FLayout', { screen:'Home' })
    })

如果登录 ID 和密码正确,它会重定向我。如果我输入了无效的 ID 和密码,它仍然会将我重定向到主页,而不是向我显示消息。

【问题讨论】:

    标签: reactjs react-native redux react-redux redux-thunk


    【解决方案1】:

    我以另一种方式找到了解决方案,我必须在我的前端应用部分中编写两个回调,例如,

    props.doLogin(data,()=>{
        
        // action.resetForm();
        // setMobileno(null)
        props.navigation.navigate('FLayout', { screen:'Home' })
    },
    ()=>{
        action.setErrors({password: props.errorMsg})
        console.log("another callback for error handle")
     })
    

    【讨论】:

    • 这实际上与我的答案相同。我只是使用函数表达式而不是匿名函数,所以它更容易阅读。很高兴你能自己解决!
    • 是的。也感谢您的帮助!
    【解决方案2】:

    看起来您没有传递回调方法来处理错误。试试这个:

    const onSuccess = () => {
      props.navigation.navigate('FLayout', { screen:'Home' })
    }
    
    const onError = () => {
      action.setErrors({password: props.errorMsg})
      // action.resetForm();
      // setMobileno(null)
    }
    
    props.doLogin(data, onSuccess, onError)
    

    【讨论】:

    • 我以另一种方式找到了解决方案,我必须在我的前端应用程序部分编写两个回调,例如 props.doLogin(data,()=>{ action.setErrors({password: props.errorMsg}) // action.resetForm(); // setMobileno(null) props.navigation.navigate('FLayout', { screen:'Home' }) },()=>{console.log("error回调")})
    猜你喜欢
    • 2016-06-12
    • 2016-09-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2018-10-25
    • 2019-05-19
    相关资源
    最近更新 更多