Closed UseMuse closed 4 years ago
Там есть доставание из localStorage на инициализации:
const localStorageData = localStorage.getItem(localStorageKey);
А в дальнейшем предполагается, что сохраняться токен будет уже через методы самого токен провайдера, по сути через методы-обертки login и logout, которые внутри импользуют setToken:
const setToken = (token: T | null) => {
if (token) {
localStorage.setItem(localStorageKey, JSON.stringify(token));
} else {
localStorage.removeItem(localStorageKey);
}
privateToken = token;
notify();
};
Который уже обновляет внутрениий токен, поэтому его не нужно передоставать каждый раз из стора.
Если править localStorage напрямую, то эта библиотечка об этом ничего конечно не узнает
это все я и так понял из кода, почему бы не брать данные о privateToken из LocalStorage каждый раз? Просмотрев код, я увидел всего лишь 2 места где нужно актуализировать privateToken
Если править localStorage напрямую, то эта библиотечка об этом ничего конечно не узнает
если добавить мой PR, то библиотечка узнает ;)
В целом никакой религиозной причины не брать токен из стора нет, максимум - чтобы меньше спамить в стор, но я думаю, что он должен пережить)
Хотя опять же, если каждая подписанная компонента будет для проверки залогиненности по факту ломиться в стор, то возможно это уже будет не очень хорошо.
Я поправлю код, чтобы токен брался всегда из localStorage
Я обновил код,
Теперь можно передать любой стор вместо моего с кешем в памяти,
Для твоего случая можно сделать следующее:
createAuthProvider({
storage = localStorage
})
Тогда данные будут писаться и браться всегда напрямую из localStorage
Надеюсь я нигде не накосячил =)
Также добавил useCallback для подписчиков Исправлено в версии 1.1.7
…change on every render.