Получение объектов состояния реакции с использованием распространения или деструктурирования

#javascript #reactjs #destructuring #spread-syntax

#javascript #reactjs #деструктурирование #распространение-синтаксис

Вопрос:

Похоже, что есть предпочтительная причина для распространения, а не для деструктурирования, но я не понимаю, почему. Конечно, при написании / чтении кода деструктурирование намного проще и требует меньше кода, но некоторые учебные пособия, похоже, предпочитают распространение, но в этих примерах они, похоже, не извлекают 2 или более элементов из состояния. Кажется странным писать:

 let obj1 = {...this.state.obj1};
let obj2 = {...this.state.obj2};
let obj3 = {...this.state.obj3};
  

когда это намного чище

let {obj1,obj2,obj3} = this.state;

Это предполагает, что я планирую сделать что-то подобное после получения этих значений

 obj1.foo = "bar";
obj1.baz = "qux";
obj2.foo = "bar";
obj3.foo = "baz";
this.setState({obj1,obj2,obj3});
  

Почему одно лучше другого, и если распространение предпочтительнее, есть ли способ сделать код более чистым?

Комментарии:

1. но в этих примерах они, похоже, не извлекают 2 или более элементов из состояния Тогда я бы назвал эти плохие учебные пособия, IMO

2. Распространение фактически дает вам весь объект состояния. Тогда как при деструктурировании у вас есть определенный объект, присвоенный тому же имени переменной, что и в {} defined. Оба имеют разные варианты использования. Они не похожи

3. @MeetZaveri Прошу прощения, я неправильно написал синтаксис распространения. Я имел в виду включить распространение каждого отдельного объекта. {…this.state.obj1} вместо {…this.state}

Ответ №1:

К сожалению, я не смог получить здесь ответ. Благодаря Reddit теперь я могу ответить на этот вопрос.

Распространение создает неглубокую копию. Деструктурирование создает ссылку, которая вызывает прямое изменение состояния. Всегда используйте распространение при извлечении из состояния для обратной записи в состояние. Деструктурирование прекрасно, когда используется только для чтения из состояния.