@Pogran

Как изменить грамотно код?

У меня есть вот такая структура prntscr.com/ceowt6

И есть такой код в редюсер
case DELETE_STRUCTURE_COUPLE:
			let obj_str = state.structure;
			objectPath.del(obj_str, action.level);

			return {
				...state,
				structure: obj_str
			};

objectPath.del(obj_str, action.level); - удаляет из объекта по уровню данные. Как можно данный код написать, чтобы не приходилось заводить переменную obj_str, а выполнить сразу же изменение структуры вот в return {...state, structure: ...}
Может кто посоветует какую литературу на эту тему, а то часто возникают такие проблемы с различными структурами
  • Вопрос задан
  • 277 просмотров
Решения вопроса 2
risentveber
@risentveber
fullstack web developer
Можно например вот так:
case DELETE_STRUCTURE_COUPLE:
      return {
        ...state,
        structure: objectPath.del(state.structure, action.level)
      };

при этом необходимо, чтобы objectPath.del возвращал изменненый первый аргумент,
однако не думаю, что это сделает код более читабельным. А вообще используйте что-то вроде https://facebook.github.io/immutable-js/ чтобы не изменять предыдущий state.
Ответ написан
Комментировать
@Faliah
Если objectPath.del удаляет данные из obj_str, то измените код так, чтобы фукнция objectPath.del возвращала результирующий объект:
objectPath.del = (obj, level) => {
  // тут логика удаления данных по уровню

  return updated_obj; // возвращаем измененный объект
}


После этого в коде можно пользоваться именно как вы хотели
case DELETE_STRUCTURE_COUPLE:
      return {
        ...state,
        structure: objectPath.del(state.structure, action.level)
      };
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы