
Roman
07.01.2018
23:10:02
Можно как-то расшарить переменную между всеми инстанциями одного определённого компонента? (типа static в OOP)
пока только root как вариант, но немного костыльный

Vladislav
07.01.2018
23:19:52

Roman
07.01.2018
23:22:26
vuex
это лишь замена $root и никак не может являеться решением. Мне нужен не application state management, а лишь предотвравить повторное вычисление которое выполняется в каждой инстанции определённого компонента при инициализации. Чтоб не тратить лишние ресурсы можно просто вычислить 1 раз, а потом проверять мол
this.$root.__myHiddenSecretSharedComputionResultForComponentXYZ

Vladislav
07.01.2018
23:22:53
а

Google

Vladislav
07.01.2018
23:22:57
миксин может

Roman
07.01.2018
23:23:06
дело в том что засорять $root не охота, если имя переменной будет достаточно рандомное то вероятность коллизии с юзер-кодом мала, но тем не менее....

Igor
07.01.2018
23:24:57
расчитай и в локал стораж положи, потом оттуда доставай

Roman
07.01.2018
23:25:51
миксин может
миксин нужно регистрировать в контексте Vue vm, разве нет? тогда это такая-же лажа
короче видимо нет другого варианта как просто спрятать в root под очень рандомным именем во избежание коллизий с юзер-кодом

Vladislav
07.01.2018
23:32:30
я не понимаю почему ее во вьюикс не положить
?

Roman
07.01.2018
23:34:18
-1 sense
не будет коллизий в $root, так будут коллизии в Vuex.state, что гораздо хуже

b0g3r
08.01.2018
02:03:59

Roman
08.01.2018
02:04:23

Google

b0g3r
08.01.2018
02:05:05
Только плагином он не является?

Roman
08.01.2018
02:05:09
однако пока-ещё не известно будет ли это конкретно плагин или просто поключаться к кодовой базе как git submodule компоненты из репы которого будут просто импортироваться в приложение

b0g3r
08.01.2018
02:06:12
Наименее костыльный, явный и привычный всем вариант - плагин, но если там одну переменную шарить и жалко в плагин оборачивать, то кроме рута и деться некуда
Но потом жди мата и ругательств от такой неявной штуки

Roman
08.01.2018
02:07:24
пока-что реализова в руте... думаю:
$root.__uic_scrollable_nativeScrollbarWidth
не должно создавать конфликтов с юзерским кодом
слишком рандомное название

Roman
08.01.2018
02:08:18

Roman
08.01.2018
02:08:58

Roman
08.01.2018
02:09:14

Roman
08.01.2018
02:10:13
вообще как бы отличается)
однако, Vuex это всего лишь замена $root которая обезопасывает мутации
Vuex.state это такой-же $root с точки зрения глобальных переменных, коллизию с пользовательским кодом не избежать, можно лишь сделать её менее вероятной рандомизировав название переменной
но если разработчику приложения использующему данный компонент взбредит в голову назвать какую либо переменную своего приложения именно: "__uic_scrollable_nativeScrollbarWidth" то неизбежно бомбанёт
однако вероятность низка. Кстати вероятность коллизии именно в $root даже ниже чем в Vuex, поскольку (надеюсь) никто не использует $root для application state management'а, а вот Vuex засорять уж точно не надо

DASTAN
08.01.2018
03:28:43

Roman
08.01.2018
03:29:47

DASTAN
08.01.2018
03:36:47

Roman
08.01.2018
03:37:19

DASTAN
08.01.2018
03:38:46

Roman
08.01.2018
03:39:37

DASTAN
08.01.2018
03:39:51
Она статичная

Roman
08.01.2018
03:40:09
верно

Google

Roman
08.01.2018
03:41:01
точнее, не "константная", ибо она вычисляется в момент инициализации инстанции компонента, а именно статичная (static class field)

DASTAN
08.01.2018
03:41:07
верно
Создай файл:
export const staticValue = 1

Roman
08.01.2018
03:41:26
инстанцироваться компонент может сколько угодно, но я хочу предотвратить повторное вычисление совместной переменной
чтоб первая инициализация установила переменную, а последующие просто её считывали

DASTAN
08.01.2018
03:43:01

Roman
08.01.2018
03:43:04
что я сейчас и делают в root

DASTAN
08.01.2018
03:43:28
С геттерами и сеттерами
Никто не сможет смутировать ее случайно
Она живет своей отдельной жизнью в своем файле
Все твои требования исполняет
Рут, вьюекс не засоряешь

Roman
08.01.2018
03:47:18
хмм, ща загуглю
Тогда можно создать по шаблону revealing module pattern
создаём файл, в котором экспортируем объект, в котором храним данные, и мутируем/читаем эти данные импортируя файл в компонент, не разглашая тем самым внутренности компонента в глобальном контексте приложения, гениально!
мерси!

DASTAN
08.01.2018
03:53:17

Саня
08.01.2018
07:25:06
Ребята, разбираю сурсы одного проекта.
Что есть get?
Это computed так вынесено или что это?

Google

Саня
08.01.2018
07:25:26
Почему так оформлено?

Rafael
08.01.2018
07:25:47

Саня
08.01.2018
07:26:37
Я просто в JS не так давно зашел.
Поэтому путаюсь в разных редакциях.

Rafael
08.01.2018
07:26:50
просто автор дибил и не смог понормальному написать этот кусок

Саня
08.01.2018
07:27:58
А как лучше написать?

Rafael
08.01.2018
07:28:11
первое - добавить кеширование

Саня
08.01.2018
07:28:13
Вот например нижний геттер. Нахрена вообще его так оформлять?

Rafael
08.01.2018
07:28:28
второе, действительно вынести в computed

Саша
08.01.2018
07:28:39
+ насчет computed

Саня
08.01.2018
07:28:57
А добавит ькеширование это чо зачит?

Rafael
08.01.2018
07:29:16
чтобы не передавать id items как параметр
точнее чтобы впринципе не добавлять id ?♂️
странное решение конечно

Alex
08.01.2018
07:30:21
И ни одного комментария, поясняющего эти странные решения)

Саня
08.01.2018
07:30:27
А если в компьютед также вынести этот подсчет суммы общей, исходя из элементов массива.

Rafael
08.01.2018
07:30:34

Саня
08.01.2018
07:30:47
Или чо там есть еще watch.

Rafael
08.01.2018
07:30:52
и в сулчае использования computed тебе вообще не придется выполнять этот пунтк

Google

Саня
08.01.2018
07:30:54
Они с computed как раз этим и отличаются же?
Что воч каждый раз делает.
А компьютед думает.

Rafael
08.01.2018
07:31:47
Они с computed как раз этим и отличаются же?
нет, там разница идеологическая: computed - когда тебе важен не только факт изменения значения, но и новое значение
вотчер же нужен только есть тебе нужен сам факт изменения значения, но на значение, можно сказать, пофиг

Саня
08.01.2018
07:32:41
Ну в воче все равно можно вычислять значение. =)
Просто это костыль и неправильно.

Rafael
08.01.2018
07:32:54

Саша
08.01.2018
07:33:01
вотч это как обсервер

Саня
08.01.2018
07:33:05
Ну я перечитал да.

Саша
08.01.2018
07:33:16
он наблюдает за значением

Саня
08.01.2018
07:33:19
Но он же обсервит и потом какое-то действие предпринимает все равно.

Саша
08.01.2018
07:33:24
и вызывает какой то коллбек когда значение меняется

Rafael
08.01.2018
07:33:24

Саня
08.01.2018
07:33:45
Ну всмысле, что реализовывать через воч то, что реализуется через компьютед — костыль.

Rafael
08.01.2018
07:33:57
еще раз перечитай мое сообщение

Саша
08.01.2018
07:34:23
как ты собрался через watch реализовывать то что реализуется через computed ?)

Саня
08.01.2018
07:34:30
И ведь перечитал. =)

Саша
08.01.2018
07:34:51

Саня
08.01.2018
07:35:03
Да я и не собрался пока.
Просто компьютед я юзал, а воч нет. =)
И поэтому пока нету понимания.