Size: a a a

JavaScript Noobs — сообщество новичков

2021 February 27

C

Chris in JavaScript Noobs — сообщество новичков
Гм, не совсем
источник

J

Just in JavaScript Noobs — сообщество новичков
Ага
источник

C

Chris in JavaScript Noobs — сообщество новичков
Как бы это нагляднее показать...
источник

J

Just in JavaScript Noobs — сообщество новичков
Chris
Как бы это нагляднее показать...
В чем проблема понять не могу)
В объекте state один объект, в импортированной перменной - другой

Присваиваю одно другому - в итоге мутированы почему-то оба

Копирование помогло, но это пока что кастыль
источник

C

Chris in JavaScript Noobs — сообщество новичков
у тебя два объекта, но ссылки внутри них - одинаковые, на одно и то же
источник

--

--x-- --y-- in JavaScript Noobs — сообщество новичков
Just
В чем проблема понять не могу)
В объекте state один объект, в импортированной перменной - другой

Присваиваю одно другому - в итоге мутированы почему-то оба

Копирование помогло, но это пока что кастыль
Они сылаются на 1 обьект
источник

J

Just in JavaScript Noobs — сообщество новичков
Chris
у тебя два объекта, но ссылки внутри них - одинаковые, на одно и то же
Да я вот тоже подумал
источник

J

Just in JavaScript Noobs — сообщество новичков
Только основной объект мутируется и с Object.freeze
источник

J

Just in JavaScript Noobs — сообщество новичков
Ну если это ссылки, тогда просто скопирую, спасибо)
источник

М

Максим in JavaScript Noobs — сообщество новичков
Странный код. Сначала копируешь в 1 стейт, затем передаешь в другой, затем берешь из стейта объект, затем в функции снова копируешь один и тот же объект по сути и делаешь действия на ссылку из стейта
источник

C

Chris in JavaScript Noobs — сообщество новичков
const source = { a: { b: [ 1, 2, 3 ], c: 4 }, d: 5 }
const obj1 = { ...source };
const obj2 = { ...source };
obj1.d = 6;   // obj1: { a: { b: [ 1, 2, 3 ], c: 4 }, d: 6 }
             // obj2: { a: { b: [ 1, 2, 3 ], c: 4 }, d: 5 }
obj1.a.c = 7; // obj1: { a: { b: [ 1, 2, 3 ], c: 7 }, d: 6 }
             // obj2: { a: { b: [ 1, 2, 3 ], c: 7 }, d: 5 }

console.log(obj1, obj2)
источник

J

Just in JavaScript Noobs — сообщество новичков
Максим
Странный код. Сначала копируешь в 1 стейт, затем передаешь в другой, затем берешь из стейта объект, затем в функции снова копируешь один и тот же объект по сути и делаешь действия на ссылку из стейта
Здесь только 1 стейт, для сброса есть объект initialState, который по дейфолту - тот единственный state
источник

S

Slava in JavaScript Noobs — сообщество новичков
Chris
const source = { a: { b: [ 1, 2, 3 ], c: 4 }, d: 5 }
const obj1 = { ...source };
const obj2 = { ...source };
obj1.d = 6;   // obj1: { a: { b: [ 1, 2, 3 ], c: 4 }, d: 6 }
             // obj2: { a: { b: [ 1, 2, 3 ], c: 4 }, d: 5 }
obj1.a.c = 7; // obj1: { a: { b: [ 1, 2, 3 ], c: 7 }, d: 6 }
             // obj2: { a: { b: [ 1, 2, 3 ], c: 7 }, d: 5 }

console.log(obj1, obj2)
если по ключам лежат объекты или массивы, то копируются ссылки на них
источник

М

Максим in JavaScript Noobs — сообщество новичков
Just
Здесь только 1 стейт, для сброса есть объект initialState, который по дейфолту - тот единственный state
сброса чего?
источник

J

Just in JavaScript Noobs — сообщество новичков
Максим
сброса чего?
Состояния стейта до начального
источник

C

Chris in JavaScript Noobs — сообщество новичков
Slava
если по ключам лежат объекты или массивы, то копируются ссылки на них
Именно
источник

М

Максим in JavaScript Noobs — сообщество новичков
Just
Состояния стейта до начального
Ты в этом сбросе берешь данные из текущего стейта, у тебя выше твоего сброса деструктуризация же значения из стейта

//а , хотя это ключ, туплю
источник

S

Slava in JavaScript Noobs — сообщество новичков
Chris
Именно
const obj1 = { ...source, a: {...source.a, b: [...source.a.b]} };
такую структуру полностью скопировать только так
источник

C

Chris in JavaScript Noobs — сообщество новичков
Короче, в 118 и 128 строке оберни свой JSON в JSON.parse(JSON.stringify(...))
источник

S

Slava in JavaScript Noobs — сообщество новичков
тож вариант )
источник