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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

в компонентах начиная с 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);

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 работает все
пользуем такую же штуку

Привет! Спасибо за помощь!! Есть ещё вопрос ...
Описание:
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

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

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

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

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

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

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

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

Interesting information? Help us, post link to social media..