@vuejs_ru

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

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
расчитай и в локал стораж положи, потом оттуда доставай
и чем это лучше $root? это ещё хуже, поскольку это запись на диск, полный нонсенс

миксин может
миксин нужно регистрировать в контексте Vue vm, разве нет? тогда это такая-же лажа

короче видимо нет другого варианта как просто спрятать в root под очень рандомным именем во избежание коллизий с юзер-кодом

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

?

Roman
07.01.2018
23:34:18
я не понимаю почему ее во вьюикс не положить
потому-что это во первых ну НИЧЕМ не отличается от root'а, во вторых это ОБЯЗЫВАЕТ пользователя компонента ставить Vuex, только ради сраной статичной переменной?

-1 sense

не будет коллизий в $root, так будут коллизии в Vuex.state, что гораздо хуже

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:58
вообще как бы отличается)
требовать Vuex ради, извиняюсь, сраной переменной... это маньячество

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
не будет коллизий в $root, так будут коллизии в Vuex.state, что гораздо хуже
Коллизии не будет во Vuex если поставить флаг namespaced: true

Roman
08.01.2018
03:29:47
Коллизии не будет во Vuex если поставить флаг namespaced: true
а, так в Vuex есть пространства имён? прикольно, не знал. Но тем не менее не повод требовать зависимости Vuex ради одной глобальной переменной

DASTAN
08.01.2018
03:36:47
а, так в Vuex есть пространства имён? прикольно, не знал. Но тем не менее не повод требовать зависимости Vuex ради одной глобальной переменной
Согласен. Ради одной переменной устанавливать вьюекс. Это было к сведению. Почему бы тебе не использовать замыкание в отдельном файле для твоей задачи?

DASTAN
08.01.2018
03:38:46
не совсем понял что ты имеешь ввиду, замыкание в отдельном файле?
Тебе нужна переменная которая будет доступна для других компонентов и они могут ее значение получать/мутировать. Я тебя правильно понял?

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
Создай файл: export const staticValue = 1
это константная, не статичная

инстанцироваться компонент может сколько угодно, но я хочу предотвратить повторное вычисление совместной переменной

чтоб первая инициализация установила переменную, а последующие просто её считывали

DASTAN
08.01.2018
03:43:01
это константная, не статичная
Тогда можно создать по шаблону revealing module pattern

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
Что есть get?
это геттер из es5

Саня
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
Вот например нижний геттер. Нахрена вообще его так оформлять?
он просто хотел сделать привязку к this конкретного объекта

чтобы не передавать id items как параметр

точнее чтобы впринципе не добавлять id ?‍♂️

странное решение конечно

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

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

Rafael
08.01.2018
07:30:34
А добавит ькеширование это чо зачит?
это значит, что пересчитывать get total_price не при каждом запросе, а только при изменении

Саня
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:35:03
Да я и не собрался пока.

Просто компьютед я юзал, а воч нет. =)

И поэтому пока нету понимания.

Страница 1837 из 3900