Size: a a a

ECMAScript Developers

2020 June 05

IT

Islambek Toichuev in ECMAScript Developers
если париться то concat/assign
источник

ES

Emir Sabyrkulov in ECMAScript Developers
я уведил свою ошибку 🤦‍♂️ Благодарю.
источник

IT

Islambek Toichuev in ECMAScript Developers
и кстати если будете юзать JSON.parse/JSON.stringify то в масиве не должно быть undefined или функций он их тупо заигнорит
источник

α

αμαν in ECMAScript Developers
Islambek Toichuev
да че париться проверка на массив и JSON.parse/JSON.stringify или deepClone из _
сказали же уже что точечным апдейтом остальные элементы не пересоздаются
источник

α

αμαν in ECMAScript Developers
если там список рендерится, то изменение одного элемента не должно тригерить перерендер всех остальных
источник

IT

Islambek Toichuev in ECMAScript Developers
так вы  же пытаетесь pure function создать нет? спредом вы не получите клон массива если в нем много уровней, те же обьекты будут ссылаться на прежний адрес и менять его
источник

IT

Islambek Toichuev in ECMAScript Developers
Spread Operator, doesn’t safely copy multi-dimensional arrays. Array/object values are copied by reference instead of by value.
источник

ES

Emir Sabyrkulov in ECMAScript Developers
идея в том, что создается новый массив, который может содержать объекты (ссылки), так как мы потом заменяем целый объект в новом массиве.
но, по моему примеру можно понять, что обосраться мега легка 😅
источник

α

αμαν in ECMAScript Developers
Islambek Toichuev
так вы  же пытаетесь pure function создать нет? спредом вы не получите клон массива если в нем много уровней, те же обьекты будут ссылаться на прежний адрес и менять его
а что по-вашему pure function? и зачем клонировать что-то на всю глубину его вложенности (т.е. зачем deepClone)?
источник

α

αμαν in ECMAScript Developers
столько обсуждения... походу реально проблемы с редаксом у людей)
источник

IT

Islambek Toichuev in ECMAScript Developers
да причем тут редакс и рендеры? попробуйте абстрогироваться от редаксов и рекатов и понять сам js
const arr = [{a: 1}]
const arr2 = [...arr]
arr2[0].a = 2
чему равен arr[0].a
?
источник

α

αμαν in ECMAScript Developers
Islambek Toichuev
да причем тут редакс и рендеры? попробуйте абстрогироваться от редаксов и рекатов и понять сам js
const arr = [{a: 1}]
const arr2 = [...arr]
arr2[0].a = 2
чему равен arr[0].a
?
2 😁
источник

IT

Islambek Toichuev in ECMAScript Developers
вооот
источник

IT

Islambek Toichuev in ECMAScript Developers
а это уже не очень
источник

α

αμαν in ECMAScript Developers
в смысле редюсер выше
источник

IT

Islambek Toichuev in ECMAScript Developers
в смысле мы поменяли первый массив
источник

α

αμαν in ECMAScript Developers
ещё раз вопрос: чем функция редюсера выше не подходит под определение чистой функции?
источник

IT

Islambek Toichuev in ECMAScript Developers
из за спредов
источник

α

αμαν in ECMAScript Developers
const reducer = (state = [], action) => {
 const nextState = [...state]

 nextState.push(action.payload)

 return nextState
}

эта функция чистая?
источник

IT

Islambek Toichuev in ECMAScript Developers
она не чистая только если мы знаем что в массиве есть обьекты и мы их меняем после спреда подумав что создали клон а так конечно спредами удобнее
источник