Регистрация  |  Вход

Есть ли жизнь без Locker Service в LWC?

Кто что думает?

Для чего это нужно? для нормальной работы со сложными структурами данных и в частности для передачи этих структур между компонентами.

Object.assign и JSON.parse(JSON.stringify) не предлагать.

Задача иметь глобальные переменные, которые можно МЕНЯТЬ из любого компонента.

Кто что думает?

Для чего это нужно? для нормальной работы со сложными структурами данных и в частности для передачи этих структур между компонентами.

Object.assign и JSON.parse(JSON.stringify) не предлагать.

Задача иметь глобальные переменные, которые можно МЕНЯТЬ из любого компонента.

можно попробовать замутить singleton паттерн в компоненте лвц - и тогда у тебя будут шареные между разными компонент переменные

можно попробовать замутить singleton паттерн в компоненте лвц - и тогда у тебя будут шареные между разными компонент переменные

Maxim Elets
можно попробовать замутить singleton паттерн в компоненте лвц - и тогда у тебя будут шареные между разными компонент переменные

Пробовал, но как только ты передаешь переменную через @api, сразу получаешь locker

[quote="Maxim Elets"]можно попробовать замутить singleton паттерн в компоненте лвц - и тогда у тебя будут шареные между разными компонент переменные[/quote]

Пробовал, но как только ты передаешь переменную через @api, сразу получаешь locker

Ребят привет! какие есть другие варианты для поставленной задачи (Задача иметь глобальные переменные, которые можно МЕНЯТЬ из любого компонента.)- очень нужно решение завис над этим... Заранее Спасибо!

Ребят привет! какие есть другие варианты для поставленной задачи (Задача иметь глобальные переменные, которые можно МЕНЯТЬ из любого компонента.)- очень нужно решение завис над этим... Заранее Спасибо!

Vladimir
Ребят привет! какие есть другие варианты для поставленной задачи

Перечитай мой пост, в нем ответ.

[quote="Vladimir"]Ребят привет! какие есть другие варианты для поставленной задачи[/quote]

Перечитай мой пост, в нем ответ.

wilder
Перечитай мой пост

Что за пост? Скинь ссылку плиз.

[quote="wilder"]Перечитай мой пост[/quote]
Что за пост? Скинь ссылку плиз.

Vladimir
Задача иметь глобальные переменные, которые можно МЕНЯТЬ из любого компонента.
Events?

[quote="Vladimir"]Задача иметь глобальные переменные, которые можно МЕНЯТЬ из любого компонента.[/quote]Events?

Так и не нашел я решение... нужна альтернатива localStorage потому что он не работает в Lightning. Посыл таков чтоб некоторая логика происходила на компьютере пользователя и работало с JS контроллерами разных компонентов без запросов на сервак

Так и не нашел я решение... нужна альтернатива localStorage потому что он не работает в Lightning. Посыл таков чтоб некоторая логика происходила на компьютере пользователя и работало с JS контроллерами разных компонентов без запросов на сервак 

Vladimir
Так и не нашел я решение... нужна альтернатива localStorage потому что он не работает в Lightning. Посыл таков чтоб некоторая логика происходила на компьютере пользователя и работало с JS контроллерами разных компонентов без запросов на сервак

кто сказал что localStorage не работает в LWC?

[quote="Vladimir"]Так и не нашел я решение... нужна альтернатива localStorage потому что он не работает в Lightning. Посыл таков чтоб некоторая логика происходила на компьютере пользователя и работало с JS контроллерами разных компонентов без запросов на сервак[/quote]
кто сказал что localStorage не работает в LWC?

Dmitry Shnyrev
Пробовал, но как только ты передаешь переменную через @api, сразу получаешь locker

Пробовал, но как только ты передаешь переменную через @api, сразу получаешь locker <- из этого следует решение проблемы

[quote="Dmitry Shnyrev"]Пробовал, но как только ты передаешь переменную через @api, сразу получаешь locker[/quote]

Пробовал, но как только ты передаешь переменную через @api, сразу получаешь locker <- из этого следует решение проблемы

в компонентах начиная с API-40 автоматически включен Loker servis который "оборачивает"(key,value)в обвертку из-за которой стает не возможным получать value по ключу используя метод localStorage.getItem(key). В итоге получается Key: LSSIndex:LOCAL{"namespace":"c"} Value: {"page":3} где 3 стала новым ключем а уж в нём мой параметр 3 : null который мне нужно менять в зависимости от условий. Сразу скажу SF занимаюсь не долго не судите строго!!

в компонентах начиная с API-40 автоматически включен Loker servis который "оборачивает"(key,value)в обвертку из-за которой стает не возможным получать value по ключу используя метод localStorage.getItem(key). В итоге получается Key: LSSIndex:LOCAL{"namespace":"c"}	Value: {"page":3} где 3 стала новым ключем а уж в нём мой параметр 3 : null который мне нужно менять в зависимости от условий. Сразу скажу SF занимаюсь не долго не судите строго!!	

Vladimir
в компонентах начиная с API-40 автоматически включен Loker servis который "оборачивает"(key,value)в обвертку из-за которой стает не возможным получать value по ключу используя метод localStorage.getItem(key). В итоге получается Key: LSSIndex:LOCAL{"namespace":"c"} Value: {"page":3} где 3 стала новым ключем а уж в нём мой параметр 3 : null который мне

Ну не знаю мои компоненты работают на 46 версии.

Пример:

let localConfig = localStorage.getItem('DC:config:' + this.recordId);

[quote="Vladimir"]в компонентах начиная с API-40 автоматически включен Loker servis который "оборачивает"(key,value)в обвертку из-за которой стает не возможным получать value по ключу используя метод localStorage.getItem(key). В итоге получается Key: LSSIndex:LOCAL{"namespace":"c"} Value: {"page":3} где 3 стала новым ключем а уж в нём мой параметр 3 : null который мне[/quote]

Ну не знаю мои компоненты работают на 46 версии.

Пример:

let localConfig = localStorage.getItem('DC:config:' + this.recordId);

wilder
Vladimir
в компонентах начиная с API-40 автоматически включен Loker servis который "оборачивает"(key,value)в обвертку из-за которой стает не возможным получать value по ключу используя метод localStorage.getItem(key). В итоге получается Key: LSSIndex:LOCAL{"namespace":"c"} Value: {"page":3} где 3 стала новым ключем а уж в нём мой параметр 3 : null который мне

Ну не знаю мои компоненты работают на 46 версии.

Пример:

let localConfig = localStorage.getItem('DC:config:' + this.recordId);

+1 работает все
пользуем такую же штуку

[quote="wilder"][quote="Vladimir"]в компонентах начиная с API-40 автоматически включен Loker servis который "оборачивает"(key,value)в обвертку из-за которой стает не возможным получать value по ключу используя метод localStorage.getItem(key). В итоге получается Key: LSSIndex:LOCAL{"namespace":"c"} Value: {"page":3} где 3 стала новым ключем а уж в нём мой параметр 3 : null который мне[/quote]

Ну не знаю мои компоненты работают на 46 версии.

Пример:

let localConfig = localStorage.getItem('DC:config:' + this.recordId);[/quote]

+1 работает все
пользуем такую же штуку

Привет! Спасибо за помощь!! Есть ещё вопрос ...
Описание:
1 User с профилем worker логинится в https://login.salesforce.com/
2 направляется на Flow (кастомный компонент!)( форма запрашивающая его личный пароль ) по этому паролю достает с бека его запись и
его поле Worker_Id__c и пытаюсь сделать так

document.cookie = "workerId = " + escape(component.get("v.workerId") );
localStorage.setItem("workerId", component.get("v.workerId"));
sessionStorage.setItem("workerId", component.get("v.workerId"));

3 далее открывается app с некоторыми компонентами в init которых пытаюсь достать эту workerId путём
document.cookie.split(';').filter((item) => item.includes('workerId')
localStorage.getItem('workerId') и не получается...
как можно это реализовать иначе или в чём ошибка?

Привет! Спасибо за помощь!! Есть ещё вопрос ...
Описание:
1 User с профилем worker логинится в https://login.salesforce.com/
2 направляется на Flow (кастомный компонент!)( форма запрашивающая его личный пароль ) по этому паролю достает с бека его запись и 
  его поле Worker_Id__c и пытаюсь сделать так 

  document.cookie = "workerId = " + escape(component.get("v.workerId") );
  localStorage.setItem("workerId", component.get("v.workerId"));
  sessionStorage.setItem("workerId", component.get("v.workerId"));

3 далее открывается app с некоторыми компонентами в init которых пытаюсь достать эту workerId путём
  document.cookie.split(';').filter((item) => item.includes('workerId')
  localStorage.getItem('workerId') и не получается...
как можно это реализовать иначе или в чём ошибка? 

Для начала стоит проверить что вообще содержится в
document.cookie
и
localStorage
Есть ли там вообще workerId (или что-то похожее)

Если нет, то искать проблему там где переменная записывается.
Если есть разбираться с тем как вы пытаетесь ее достать:
- может .split(';').filter((item) => item.includes('workerId') не работает
- workerId переменная имеет более сложное имя.

А вот эта пометка "( форма запрашивающая его личный пароль )" вообще сильно настораживает. Личный пароль нельзя нигде запрашивать. Он запрашивается только однажды при входе и то самим Salesforce а не какими-то кастомными компонентами. Не знаю как в Lightning но обычно для всяких нужд вместо пароля используется SessionID

Для начала стоит проверить что вообще содержится в 
document.cookie
и
localStorage
Есть ли там вообще workerId (или что-то похожее)

Если нет, то искать проблему там где переменная записывается.
Если есть разбираться с тем как вы пытаетесь ее достать:
- может .split(';').filter((item) => item.includes('workerId') не работает
- workerId переменная имеет более сложное имя.

А вот эта пометка "( форма запрашивающая его личный пароль )" вообще сильно настораживает. Личный пароль нельзя нигде запрашивать. Он запрашивается только однажды при входе и то самим Salesforce а не какими-то кастомными компонентами. Не знаю как в Lightning но обычно для всяких нужд вместо пароля используется SessionID

Vladimir
ocalStorage.getItem('workerId') и не получается...
как можно это реализовать иначе или в чём ошибка?

А что именно не получается, было бы не плохо понять: вылазит ошибка? или значение пустое?

Ну и еще куки все storage могут быть заданы в разных доменах
поэтому их и не получается получить

[quote="Vladimir"]ocalStorage.getItem('workerId') и не получается...
как можно это реализовать иначе или в чём ошибка?[/quote]
А что именно не получается, было бы не плохо понять: вылазит ошибка? или значение пустое?

Ну и еще куки все storage могут быть заданы в разных доменах
поэтому их и не получается получить

после открытия App в локале сейшн и в куках во всех только один и тот же домен в котором нет такого ключа и намека на него в куках обычно добавляется LSKey[c] к workerId в стореджах что то типа
LSSNextSynthtic:LOCAL 2
LSSIndex:LOCAL{"namespace":"c"} {"workerId":1}
1 undefined
где 1 и его значени и есть мой workerId и достать значение получалось (в других проектах)
типа так localStorage.getItem("LSSNextSynthtic:LOCAL") - 1).toString();
ошибок нет! И нет ни ключа ни значения

после открытия App в локале сейшн и в куках во всех только один и тот же домен в котором нет такого ключа и намека на него в куках обычно добавляется LSKey[c] к workerId в стореджах что то типа 
LSSNextSynthtic:LOCAL	2	
LSSIndex:LOCAL{"namespace":"c"}	{"workerId":1}	
1	undefined	
где 1 и его значени и есть мой workerId и достать значение получалось (в других проектах) 
типа так localStorage.getItem("LSSNextSynthtic:LOCAL") - 1).toString();
ошибок нет! И нет ни ключа ни значения

Я так понимаю, человек пытается сьэкономить на лицензиях?

Я так понимаю, человек пытается сьэкономить на лицензиях?

нет такой задачи!!!
то-есть если приобрести лицензию то такой подход будет работать?
И о какой лицензии идет речь?

;) нет такой задачи!!!
то-есть если приобрести лицензию то такой подход будет работать? 
И о какой лицензии идет речь?

Может, Community подойдет больше?

Может, Community подойдет больше?