一片反应还原存储状态是否必须是一个对象?

时间:2016-10-12 00:08:24

标签: javascript reactjs redux

我将下面的状态片段(filterText)组合起来,它用于过滤掉结果,因此它只需要保存一个字符串。是否可以将初始状态设置为空字符串?或者它必须是一个对象,即使它只是整个较大的商店对象的一部分?如果我可以将它作为一个字符串,我如何为每个调度创建一个新的状态副本?当前return {...state, ...action.data}看起来很奇怪。

const initialState = ''

const filterText = (state = initialState, action) => {
  switch (action.type) {
    case constants.FILTER_CONTACTS:
      return {
        ...state,
        ...action.data
      }
    default:
      return state
  }
}

export default filterText

1 个答案:

答案 0 :(得分:3)

初始状态可以是字符串,但是在每个开关的情况下它也应该返回一个字符串。

更新状态时,您不需要复制,因为整个状态是一个字符串,您只需返回新字符串。如果没有变化,您只需返回旧状态。



const initialState = ''

const filterText = (state = initialState, action) => {
  switch (action.type) {
    case constants.FILTER_CONTACTS:
      // return a string here, I'm assuming action.data is a string
      return action.data;
    default:
      return state
  }
}

export default filterText




希望这有帮助。