
Дмитрий
17.10.2018
15:35:45

Roman
17.10.2018
15:36:09
в чем вопрос?
то что правило не отлавливает деструктуризацию - это баг

Дмитрий
17.10.2018
15:36:55
в чем вопрос?
Как, по-хорошему, следует работать с методами массивов (forEach, map и т.д.), оставаясь в рамках этого правила?

Google

Roman
17.10.2018
15:36:59
аа
тебе в иммутабельность
надо создавать копии, модифицировать их и возвращать

ujeenator
17.10.2018
15:37:26

Roman
17.10.2018
15:37:47
^^ согласен
если в проекте принята иммутабельность - это нормальное линт-правило, чтоб кто-то случайно не мутировал

Дмитрий
17.10.2018
15:39:33

ujeenator
17.10.2018
15:39:53
ну и также в вашем примере вы мутируете DOM
изолировать себя от мутации DOM'a можно только если использовать фреймворки по типу React VUE
Сам по себе DOM построен на мутациях

Roman
17.10.2018
15:40:07
^^ опять согласен =) не успеваю с ответами

ujeenator
17.10.2018
15:40:23
?

Андрей
17.10.2018
15:41:01
свой виртуал дом и все дела ?

Дмитрий
17.10.2018
15:43:29

Google

Андрей
17.10.2018
15:48:34
полно языков транспилирующихся в сабж, при этом с иммутубельными структурами данных из коробки - пурескрипт, эльм, кложаскрипт и т.п. выбирай на вкус. можно при желании посмотреть как там сделаны эффективные датаструкчи. хотя и в иммутабл-жс что-то должно быть наверное

Н
17.10.2018
15:50:09

ujeenator
17.10.2018
15:51:36
Ну ОК. А если бы это был не ДОМ, а некий массив неких объектов?
если объекты имеет 1-2 уровня вложености то используют spread операторы чтобы создавать копии
let arr = [{ name: 'John', surname: 'Smith' }, { name: 'Alice', surname: 'Smith' }]
arr = arr.map(
user => ({
...user,
fullName: `${user.name} ${user.surname}`
})
)
если больше - то используют библиотеки для работы с иммутабельными объектами
я чаще всего использую immutability-helper


Роман
17.10.2018
15:56:25

ujeenator
17.10.2018
15:56:56
все ошибки в основном от мутации значений
мутацию ссылок можно избегать если в этом есть реальная потребность

Роман
17.10.2018
15:58:07

ujeenator
17.10.2018
15:58:25
я перезаписываю ссылку на arr
оригинальный arr не меняется

Роман
17.10.2018
15:59:17

Roman
17.10.2018
15:59:22

ujeenator
17.10.2018
15:59:33

Roman
17.10.2018
15:59:35

ujeenator
17.10.2018
15:59:58

Роман
17.10.2018
16:00:09

Roman
17.10.2018
16:00:11
надо проще объяснять)

Роман
17.10.2018
16:00:24

ujeenator
17.10.2018
16:01:09

Роман
17.10.2018
16:01:40

Google

Дмитрий
17.10.2018
16:08:01

ujeenator
17.10.2018
16:09:08
только ты меняешь не в нем, а создаешь новую копию массива где есть это изменение
куда эту assign'ить - это уже зависит от задачи)

Дмитрий
17.10.2018
16:12:31

Роман
17.10.2018
16:13:04
Я вот тоже не понимаю тех кто топит за иммутабельность. Как они работают с большими массивами?

ujeenator
17.10.2018
16:13:27
Например я писал на React Native рисовалку для ios android
у меня был отдельный компонент который работал с байт массивом imageData
но всю эту логику он полностью скрывал внутри себя

Роман
17.10.2018
16:15:08

ujeenator
17.10.2018
16:15:47
копируешь, сортируешь
а если проект маленький - то иммутабельность вам и не нужна

Роман
17.10.2018
16:16:42
копируешь, сортируешь
> Копируешь
А там 10к элементов. И всё ради чего? Если мы дальше планируем работать с отсортированным массивом только.

ujeenator
17.10.2018
16:16:49

Роман
17.10.2018
16:16:59
Задача отсортировать массив и работать с ним. Зачем нам копия?

ujeenator
17.10.2018
16:17:18
ну так если есть конкретный пример - то давай конкретно разбирать

Google

Роман
17.10.2018
16:18:34
Так сортировка и есть конкретный пример. По памяти я уже понял. Но не понимаю логику, зачем хранить оригинал, если мы работать планируем с модифицированной версией? И только с ней. Как в этом случае поступают?

ujeenator
17.10.2018
16:19:53
есть вот шкала такая
на одной стороне ты получаешь
простотой в понимании проект, легкий в откладке и отлове ошибок
на другой стороне ты получаешь проект быстро работающий и эффективно использующий память
на этой шкале ты выбираешь для себя подходящую точку)
для своей задачи

Admin
ERROR: S client not available

ujeenator
17.10.2018
16:20:55
иммутабельность это инструмент который позволяет контроллировать сложность проекта, взамен на некоторую долю памяти и времени процессора

Влад
17.10.2018
16:22:48
Вечер добрый, есть идея создать веб приложения с множеством динамических веб форм, начал писать на фласке, но там с динамиком чет тяжко, подскажите пожалуйста какой выбрать вреймворк ?

Kirill
17.10.2018
16:44:25
Ребята, всем привет, такой вопрос:
У меня есть кнопка и на нее навешано событие по классу на клик, потом удаляю этот класс у ней и добавляю новый и хочу реализовать уже другое событие, а оно все равно делает и старое и новое( как быть, подскажите пожалуйста?)

Роман
17.10.2018
16:45:11
Либо смотреть внутри обработчика клика на класс элемента и выполнять нужный функционал.

Дмитрий
17.10.2018
16:46:16

Kirill
17.10.2018
16:53:31

Roman
17.10.2018
16:59:36

({|})
17.10.2018
17:24:46
https://learn.javascript.ru/event-delegation

Roman
17.10.2018
17:57:17
кто работал с react-native? можно вообще не работать с xcode? то есть понятно, он нужен для билда, но писать можно в чем-то другом?

alex
17.10.2018
17:58:50
Всем привет. Нужен программист для одного дела, прибыль 50-50. Опишите.

ujeenator
17.10.2018
18:00:22

Roman
17.10.2018
18:00:43

Google

ujeenator
17.10.2018
18:01:24

Roman
17.10.2018
18:01:59
хочу подружить с encfs облаке

Kirill
17.10.2018
18:38:12

Александр
18.10.2018
06:28:38
Коллеги, всем привет! Подскажите плиз, как можно разместить в <select> вкладки?

Сасный
18.10.2018
06:41:22
Никак
Кастомный селект делается на дивах отдельно от селекта и его оптион
а связь между ними создается через жс
Взгляните на selectize или select2

Александр
18.10.2018
06:51:43
я пробовал select2 юзать
но видимо внутри селекта нельзя вкладки поместить
или тут один вариант - писать с нуля, чистый инпут прикрутить

? ethorz
18.10.2018
07:26:24
хэлп плиз