每次更新反应上下文状态时,我们是否应该有不同的操作类型?

Should we have a different action type for every time we update a react context state?

假设我们在一个大的 Context 中构建了所有东西,我们正在使用这个 context 进行状态管理(也许更适合 redux...但无论如何...)

每次我们想要更新一个 属性 状态时,我们是否想要一个新的操作类型?或者我们是否应该在 reducer 中有一个像 UPDATE_STATE 这样的通用操作来处理我们有一个实际上没有任何缩减逻辑的简单更改的时间。

例如:

switch(action.type) {
  case "SET_MODAL":
    return {
      ...state,
      isModalOpen: action.isModalOpen
    }
  case "SET_ERROR_MSG":
    return {
      ...state,
      errMsg: action.errMsg
    }
  case "SET_HAS_CLICKED_THING":
    return {
      ...state,
      clickedThing: action.clickedThing
    }
   // ***ALOT MORE OF THESE^^^***
   // ***ALOT MORE OF THESE^^^***
  case "GET_ITEMS_SUCCESS":
    const { items } = action
    const newItems = items.map(*some reduction change logic that is not standard*)
    return {
      ...state,
      items: newItems
    }
}

switch(action.type) {
  case "UPDATE_STATE":
    return {
      ...state,
      ...action.state
    }
  case "GET_ITEMS_SUCCESS":
    const { items } = action
    const newItems = items.map(*some reduction change logic that is not standard*)
    return {
      ...state,
      items: newItems
    }
}

看来我们会有一大堆我不确定是否增加价值的行动。实际上,我们只想在状态中存储一个值。我们真的每次只想更新状态时都需要一个动作吗?

由你决定。但我会选择第一种方式。它看起来更具可读性,并且可以更好地查看数据流。定义操作可帮助您轻松调试并找出应用程序中发生的情况。