в редюсер? Это нормально?
Ведь props иммутабельны?
getState ничего не мутирует
props передаваемые в компонент тоже не мутируются ведь ?
У меня изменение параметра у объекта полученного через getState мутируется напрямую в компоненте. тоесть: const { object } = getState().reducer object.parametr = 10 без диспача в редюсер меняет значение в компоненте, если проверить через console.log(this.props.object.parametr)
Ты сам мутируешь, так нельзя
Вообще пока забудь про мутации, используй spread {...object, parameter: newValue} getState().slice тоже не используй, пиши функции селекторы И сам getState используй только в thunk
Так дело в том, что я использую getState только в thunk. Разве через getState можно мутировать? да или нет?
В js ты можешь наворотить все что угодно, мало чего в принципе нельзя сделать, не понимаю что ты хочешь понять? блокирует ли редакс мутации напрямую? нет
1) блокирует ли редакс мутации напрямую или нет? 2) передаваемый props в компонент мутируется или нет?
Да там же просто передается объект по ссылке
Редакс ничего не блокирует, props мутируется
Тоесть при работе с пропсами в компоненте их тоже нужно копировать. const { object } = { ...this.props } ?
Лучше просто не мутировать
Частый кейс - нужно изменить 1 или несколько свойств, которое ты достаешь деструктуризацией и диспатчишь измененные данные, либо создаешь новый объект и докидываешь в него требуемые свойства, не используя копию
// иммутабельно const { object } = { ...this.props } object = 10 //мутабельно const { object } = this.props const object2 = object object2 = 10 Всё верно?
зачем тебе делать object = 10?
https://learn.javascript.ru/object-copy, ознакомся, к реакту и редаксу вопрос не имеет отношения
Не если тебе нужен измененный объект то const newObject = {...object, value: 10} Но не забывай что это не глубокое копирование
мне просто понять мутабельность. Тут понятно, мы создаём новый объект на основе скопированных свойств и не мутируем напрямую object const { object } = { ...this.props } object = 10 И тут не мутируем, верно? const { object } = this.props const object2 = object object2 = 10
оригинальный object не мутируешь, новый мутируешь
Обсуждают сегодня