Yakov
тогда ево
Lama
Where папик 😭
Nikita 🐋
Купила билеты в отпуск
пихель, сосунг, ванплас
Yakov
Но вообще жесть мобекс страшно тут выглядит :))
Yakov
Это сколько в процентах?
Nikita 🐋
Это сколько в процентах?
чет тип четверти
Nikita 🐋
мб больше
Nikita 🐋
мб треть
Nikita 🐋
без мобкса src бы разорвало
Yakov
Глянь на RTK крач, очень интересно что скажешь
Nikita 🐋
там в названии redux
Nikita 🐋
мне не позволяет религия
Yakov
там в названии redux
Не смотри на название!
Nikita 🐋
я посмотрел в код
Nikita 🐋
опять редьюсеры
Yakov
Плохо, да?
Nikita 🐋
ну это функциональный подход
Nikita 🐋
для функционального норм
Yakov
Slices:
Смотри, тут же поле reducers – это банально методы
Yakov
Которые банально мутируют стейт
Nikita 🐋
Смотри, тут же поле reducers – это банально методы
так редьюсеры — это и есть банально методы
Yakov
Именно мутируют, не создают новый
Nikita 🐋
почему я не могу сделать просто counterSlice.counter++?
Nikita 🐋
у mobx это называлось actions
Nikita 🐋
и с 4 версии это стало необязательным
Nikita 🐋
с тех пор я не могу понять, почему код не может сам разобраться, где смена состояния, а где нет
Yakov
так редьюсеры — это и есть банально методы
Нет? Редьюсеры это мерзкие if (type == "increment") { return state + 1 }, тут же – этого нет
Lovecoin
Нет? Редьюсеры это мерзкие if (type == "increment") { return state + 1 }, тут же – этого нет
1 Лавкоинов было подарено borodutch. Всего у borodutch 7992 Лавкоинов.
Yakov
Тут просто state++
Lama
Яков каков твой пихель🌚
Yakov
ну ок, тут экшены
Угу, как в мобексе
Nikita 🐋
ну ок, тут экшены
ошибаешься, тут function() { state++ }
Lovecoin
ошибаешься, тут function() { state++ }
Во имя любви, попробуйте лучше поделиться Лавкоинами с собеседниками!
Nikita 🐋
Угу, как в мобексе
не, в мобексе state++ напрямую
Lovecoin
не, в мобексе state++ напрямую
2 Лавкоинов было волшебным образом создано для purplenoodlesoop. Всего у purplenoodlesoop 985 Лавкоинов.
Yakov
Nikita 🐋
Но это же ужасно :)
нет, абсолютно не ужасно
Yakov
Т.е. ты можешь шальным компонентом просто поменять стейт на что угодно
Nikita 🐋
стоп
Nikita 🐋
не на что угодно
Nikita 🐋
там же типы
Yakov
Ну, в смысле на что угодно в пределах типа поля
Nikita 🐋
как и с экшенами, да
Nikita 🐋
потому что, эм, что ты будешь в экшены ("редьюсеры") передавать?
Nikita 🐋
updateValue(newValue: string) { state.value = newValue }
Yakov
как и с экшенами, да
Блин, да, в мобексе же все мутабельное снаружи, в любом случае
Nikita 🐋
updateValue(newValue: string) { state.value = newValue }
почему просто не дать изменить state.value = newValue?
Nikita 🐋
зачем танцы с оберткой в функцию?
Nikita 🐋
это ж прямо определение "лишнего кода"
Nikita 🐋
конечно, понятно, зачем эти танцы
Nikita 🐋
В JS есть геттеры?
да! И сеттеры
Nikita 🐋
но блен
Yakov
да! И сеттеры
Без скобочек?
Nikita 🐋
mobx же без этого умеет
Yakov
Ща ща
Nikita 🐋
вот что тайпскрипт с людьми делает: https://github.com/backmeupplz/tlgcoin/commit/047c8f8bdb4cb2f3f4f28f36606f1c49f0922e66
Nikita 🐋
а писал бы на Haskell, не было бы такого
Yakov
Вот у меня тут есть три метода, отвечающие за обработку нажатия мазка кисти. _manageEraserPosition ставит реактивное значение позиции ластика. Напрямую позицию ластика я не могу изменить никак, только косвенно, через строук. Мог бы я изменить её напрямую – я мог бы изменить её вообще в рандомном месте и выпасть в совершенно неадекватное состояние, которое бы я дебажил целые сутки, не понимая, где поменялось значение ластика
Yakov
Это дарт, но просто как пример
Nikita 🐋
и пытаешься им доказать то, что не нужно давать людям возможность напрямую изменять состояние без сеттера с валидацией во всех случаях
Nikita 🐋
но в итоге ты заставляешь нас писать миграции даже тогда, когда их могла бы написать за нас машина
Nikita 🐋
Yakov
и пытаешься им доказать то, что не нужно давать людям возможность напрямую изменять состояние без сеттера с валидацией во всех случаях
Если отобрать возможность мутировать значения без предопределенных путей для этого в принципе – не нужно будет думать, что экспозить напрямую, а что оборачивать + будет единая точка входа/интерфейс для мутаций. Имхо, это приведет к куда более мейнтейнабл коду, который будет проще понимать и проще модифицировать. Я согласен на мизерный оверхед в виде void setField(Type newValue) {} за такие плюшки взамен.
Nikita 🐋
если бы = не был бы синтаксическим сахаром к сеттеру
Nikita 🐋
это *одно и то же*
Yakov
Yakov
хмммммм
Yakov
хммм