【问题标题】:How to translate errors which occurs in redux-saga?如何翻译 redux-saga 中出现的错误?
【发布时间】:2019-04-02 05:20:53
【问题描述】:

我有一个问题,如何翻译 redux-saga 中捕获的错误。你在 React-Redux 中的表现如何?

我正在尝试这样做:

catch (error) {
  if(error.response.payload.error==='Unauthorized'){
        Alert.error(<FormattedMessage {...messages.unauthorizedMessage} />, {
          html: false,
        });
  }

【问题讨论】:

    标签: react-redux alert redux-saga react-intl


    【解决方案1】:

    在 saga catch 块中,调度一个动作:

    // saga:
    catch(error) {
      if(error.response.payload.error==='Unauthorized'){
        yield put({ 
          type: 'UNAUTHORIZED_REQUEST',
          message: messages.unauthorizedMessage
        })
      }
    }
    

    然后在reducer中,根据action更新状态:

    const requestError = (state = null, { type, message }) => {
        case 'UNAUTHORIZED_REQUEST':
            return message;
        default:
            return state;
    }
    

    然后,让组件呈现错误消息以反映更新后的状态:

    let MyComponent = ({ requestError }) => {
        return (
            <div>
                {requestError &&
                    <MyErrorMessage message={requestError} />
                }
    
                {/* ... */}
            </div>
        )
    }
    
    MyComponent = connect(
        state => ({
            requestError: state.requestError
        })
    )(MyComponent)
    

    【讨论】:

      猜你喜欢
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 2018-07-03
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多