Есть ли в redux встроенный метод удаления для изменения значений состояния приложения * ha sh? - PullRequest
1 голос
/ 17 января 2020

Я наткнулся на этот фрагмент кода (я просто опубликую фрагмент, о котором у меня есть вопрос), который удаляет элемент todo из ха sh (элемент todo ha sh является состоянием приложения ). По сути, удаленный элемент todo не должен отображаться в будущих версиях состояния этого приложения.

case REMOVE_TODO:
      nextState = Object.assign({}, state);
      delete nextState[action.todo.id];
      return nextState;

Я понимаю, что другим способом решения этой проблемы будет использование метода .filter для получения правильного га sh элементов; но что делает этот встроенный delete метод / фрагмент кода? Кажется, я нигде не могу найти официальную документацию по этому вопросу; ссылки на ресурсы или ответы приветствуются!

1 Ответ

1 голос
/ 17 января 2020

delete - это встроенный оператор JavaScript, который "удаляет свойство из объекта" (см. Документацию из сообщества Mozilla ).

Re:

Я понимаю, что другим способом решения этой проблемы было бы использование метода фильтра для получения правильных ha sh элементов

You ' d используйте filter для массива, но ваш пример решил сохранить TODO в объекте, где каждый TODO является значением другого свойства этого объекта (1) , следовательно необходимость «удаления свойства».


(1) Это использование объекта в качестве «карты» структуры данных - некоторые мысли о такой практике можно найти в документация для выделенного Map, введенная в JavaScript позже. В общем, карты используются потому, что они помогают быстрее получить значение по идентификатору, чем из структуры данных списка, такой как массив, потому что карты содержат индексы, которые ускоряют поиск по ключу. Здесь, в Redux, этот подход особенно распространен, потому что Redux рекомендует , чтобы "каждый объект хранился один раз, с ключом по идентификатору, а другие объекты, которые ссылаются на него, должны хранить только идентификатор, а не копия всего объекта ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...