reactjs - Redux中的验证处理

标签 reactjs error-handling redux

考虑这样的reduce(我正在使用redux-action库)

export const reducer = handleActions({
  [REMOVE_CATEGORY]: (state, action) => ({
    ...state,
    // Do other stuff...
  }),
  [TOGGLE_CATEGORY]: (state, action) => {
    const category = action.payload.category
    const selectedCategory = _.findWhere(state.categories, {name: category.name})
    const activeCategories = _.filter(state.categories, {active: true})

    if (activeCategories.length < 4 && selectedCategory.active === true) {
      return {
        ...state,
        didToggleFail: true
      }
    }

    return {
      didToggleFail: false,
      isRequesting: false,
      categories: state.categories.map(
        category => category.name === action.payload.category.name ? {...category, active: !category.active} : category
      )
    }
  },
  [OTHER_ACTION]: (state,action) => ({
    ...state, 
    // Do other stuff..
  })
})

我发现自己面临一个简单的问题,这可能是由于我对解决方案的不良态度所致;

reducer 中的每个action基本上都会传播先前存在的状态,但是有一个字段didToggleFail是根据各种条件设置的。

现在我的问题是:我用于同步验证的didToggleFail将永远处于我的状态,直到未设置为止。

我在这样的didToggleFail中使用componentDidUpdate:
componentDidUpdate() {
if(this.props.reducer.didToggleFail)
   showError() 
}
...

如您所见,我的问题是,如果我调度其他操作并且该字段仍设置为true,它将始终触发错误。

应该如何处理这种情况?

最佳答案

我猜显示错误后,将为用户提供一个关闭错误的选项(或在超时后自动关闭)。此时,请调度另一个UNSET_TOGGLE_FAIL以将didToggleFail设置为false。这应该防止多个触发器。

但是,最佳解决方案取决于showError()的功能。是渲染方法还是其他redux Action 调度。如果是纯渲染,我建议在组件的render中移动,因为每次重新渲染后componentDidUpdate都会被调用,并且如果您不取消设置didToggleFail,则可能会导致循环。

关于reactjs - Redux中的验证处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53747260/

相关文章:

javascript - 使用 Redux 在 Store 上创建 initialState

reactjs - 是否可以将 MaterialUI 与 React 和 css 模块一起使用并访问 css 模块文件中的主题?

asp.net - 这是臭臭的错误处理吗?

error-handling - 为什么我的 nextcloud 网络驱动器无法连接智能卡丢失错误?

javascript - 尝试返回从 mapDispatchToProps dispatch 的 Action 创建者的 promise

javascript - 在 react/redux 中传递多个 props 和 action

javascript - react : How do you lazyload image from API response?

javascript - 尝试从 React 中的对象数组中删除项目

ajax - [React]将异步数据获取到组件中的不同方式

node.js - 如果记录不存在,MongoDB 查找不会返回错误?