локальное хранилище сбрасывает идентификаторы состояний, чтобы они переопределяли объекты хранилища - PullRequest
0 голосов
/ 25 мая 2019

Ниже вы можете увидеть, как у меня это структурировано в моем магазине состояний и резервов. У меня есть переменные состояния, которые подсчитывают, когда я добавляю и удаляю объект, чтобы он знал, по какому индексу следует поместить следующий.

state = {
    id: 0,
    goalId: 0,
}

Но проблема в том, что когда я перезагружаю страницу, так как я использую локальное хранилище, все состояние реакции возвращается к значению по умолчанию. Я думаю, что должен быть лучший способ справиться с этой ситуацией, чем создавать новый редуктор для этой или другой переменной.

{
  list: {
    '0': {
      id: 0,
      dueDate: 'By May 28th I Will have: ',
      goals: [
        {
         0: {...}
         1: {...}
         3: {...}
        }
      ]
    }
   '1':{
      id: 0,
      dueDate: 'By June 31st I Will have: ',
      goals: [
        {
         2: {...}
         4: {...}
        }
}

1010 * Редуктор *



export default (state = {}, action) => {

  switch (action.type) {

    case 'COMP_MOUNT':
      return 

    case 'ADD_DUEDATE':
      return { ...state, [action.payload.id]: action.payload }

    case 'ADD_DEEP_ITEM':
      return {
        ...state,
        [action.payload.dueDateId]: {
          ...state[action.payload.dueDateId],
          goals: state[action.payload.dueDateId].goals.concat(action.payload)
        }
      }
    case 'DELETE_DEEP_ITEM':


      // console.log(`action.length ${action}`)

      return {
        ...state,
        [action.payload.keyName]: {
          ...state[action.payload.keyName],
          goals: [
            ...state[action.payload.keyName].goals.slice(0, action.payload.index),
            ...state[action.payload.keyName].goals.slice(action.payload.index + 1)
          ]
        }
      }

    case 'EDIT_DEEP_ITEM':

      console.log(action)
      console.log(`state${state}`)

      const keyName = action.payload.keyName
      const goal = action.payload.goal
      const goals = [...state[keyName].goals];
      goals.splice(action.payload.index, 1, goal);

      return {
        ...state,
        [keyName]: {
          ...state[keyName],
          goals,
        }
      };

    default:
      return state;
  }
}

Заранее спасибо! :)

...