Demetrio
Наименее костыльный, явный и привычный всем вариант - плагин, но если там одну переменную шарить и жалко в плагин оборачивать, то кроме рута и деться некуда
Demetrio
Но потом жди мата и ругательств от такой неявной штуки
Roman
пока-что реализова в руте... думаю:
$root.__uic_scrollable_nativeScrollbarWidth
не должно создавать конфликтов с юзерским кодом
Roman
слишком рандомное название
ℝei
ℝei
Roman
вообще как бы отличается)
однако, Vuex это всего лишь замена $root которая обезопасывает мутации
Vuex.state это такой-же $root с точки зрения глобальных переменных, коллизию с пользовательским кодом не избежать, можно лишь сделать её менее вероятной рандомизировав название переменной
Roman
но если разработчику приложения использующему данный компонент взбредит в голову назвать какую либо переменную своего приложения именно: "__uic_scrollable_nativeScrollbarWidth" то неизбежно бомбанёт
Roman
однако вероятность низка. Кстати вероятность коллизии именно в $root даже ниже чем в Vuex, поскольку (надеюсь) никто не использует $root для application state management'а, а вот Vuex засорять уж точно не надо
D
Roman
Roman
D
Она статичная
Roman
верно
Roman
точнее, не "константная", ибо она вычисляется в момент инициализации инстанции компонента, а именно статичная (static class field)
D
верно
Создай файл:
export const staticValue = 1
Roman
Roman
инстанцироваться компонент может сколько угодно, но я хочу предотвратить повторное вычисление совместной переменной
Roman
чтоб первая инициализация установила переменную, а последующие просто её считывали
Roman
что я сейчас и делают в root
D
С геттерами и сеттерами
D
Никто не сможет смутировать ее случайно
D
Она живет своей отдельной жизнью в своем файле
D
Все твои требования исполняет
D
Рут, вьюекс не засоряешь
Roman
хмм, ща загуглю
Roman
Тогда можно создать по шаблону revealing module pattern
создаём файл, в котором экспортируем объект, в котором храним данные, и мутируем/читаем эти данные импортируя файл в компонент, не разглашая тем самым внутренности компонента в глобальном контексте приложения, гениально!
Roman
мерси!
D
Александр 🌲🙏🏽
Ребята, разбираю сурсы одного проекта.
Александр 🌲🙏🏽
Александр 🌲🙏🏽
Что есть get?
Александр 🌲🙏🏽
Это computed так вынесено или что это?
Александр 🌲🙏🏽
Почему так оформлено?
Александр 🌲🙏🏽
Я просто в JS не так давно зашел.
Александр 🌲🙏🏽
Поэтому путаюсь в разных редакциях.
Rafael 🌵
просто автор дибил и не смог понормальному написать этот кусок
Александр 🌲🙏🏽
А как лучше написать?
Rafael 🌵
первое - добавить кеширование
Александр 🌲🙏🏽
Вот например нижний геттер. Нахрена вообще его так оформлять?
Rafael 🌵
второе, действительно вынести в computed
Александр
+ насчет computed
Александр 🌲🙏🏽
А добавит ькеширование это чо зачит?
Rafael 🌵
Rafael 🌵
чтобы не передавать id items как параметр
Rafael 🌵
точнее чтобы впринципе не добавлять id 🤷♂️
Rafael 🌵
странное решение конечно
Alex
И ни одного комментария, поясняющего эти странные решения)
Александр 🌲🙏🏽
А если в компьютед также вынести этот подсчет суммы общей, исходя из элементов массива.
Александр 🌲🙏🏽
Или чо там есть еще watch.
Rafael 🌵
и в сулчае использования computed тебе вообще не придется выполнять этот пунтк
Александр 🌲🙏🏽
Они с computed как раз этим и отличаются же?
Александр 🌲🙏🏽
Что воч каждый раз делает.
Александр 🌲🙏🏽
А компьютед думает.
Rafael 🌵
Они с computed как раз этим и отличаются же?
нет, там разница идеологическая: computed - когда тебе важен не только факт изменения значения, но и новое значение
вотчер же нужен только есть тебе нужен сам факт изменения значения, но на значение, можно сказать, пофиг
Александр 🌲🙏🏽
Ну в воче все равно можно вычислять значение. =)
Александр 🌲🙏🏽
Просто это костыль и неправильно.
Rafael 🌵
Александр
вотч это как обсервер
Александр 🌲🙏🏽
Ну я перечитал да.
Александр
он наблюдает за значением
Александр 🌲🙏🏽
Но он же обсервит и потом какое-то действие предпринимает все равно.
Александр
и вызывает какой то коллбек когда значение меняется
Александр 🌲🙏🏽
Ну всмысле, что реализовывать через воч то, что реализуется через компьютед — костыль.
Rafael 🌵
еще раз перечитай мое сообщение
Александр
как ты собрался через watch реализовывать то что реализуется через computed ?)
Александр 🌲🙏🏽
И ведь перечитал. =)
Александр
Александр 🌲🙏🏽
Да я и не собрался пока.
Александр 🌲🙏🏽
Просто компьютед я юзал, а воч нет. =)
Александр 🌲🙏🏽
И поэтому пока нету понимания.
Александр 🌲🙏🏽
Но я стараюсь. Почитаю еще раз документацию.