如何为Redux状态项生成新密钥?

时间:2018-05-22 00:29:42

标签: javascript reactjs redux react-redux

我在确定使用新密钥将新项目添加到React / Redux状态的最佳做法时遇到了一些麻烦。

鉴于州:

const initialState = {
  "routines": {
    "1": {
      "id": 1,
      "name": "Routine 1",
    },
    "2": {
      "id": 2,
      "name": "Routine 2",
    }
  }
}

我想说我想在这个状态下添加一个新项目。我应该在哪里提出用于提出新ID的逻辑?

  1. 这应该是提交触发ADD_ROUTINE操作的表单的属性吗?
  2. 生成新id的逻辑是否应该在reducer中?
  3. 这是我最好的尝试,但我想知道是否有更好的方法来做到这一点。

    import { ADD_ROUTINE } from '../actions/routineActions'
    
    function routineReducer(state={}, action) {
      switch (action.type) {
        case ADD_ROUTINE:
          newState = {...state}
          number_of_keys = Object.keys(newState).length
          new_id = number_of_keys + 1
          return {
            ...state,
            new_id: {
              id: new_id,
              name: action.name,
              days: []
            }
          }
        default:
          return state
      }
    }
    
    export default routineReducer
    

0 个答案:

没有答案