OnAfterRender
теперь вызывается только тогда, когда компонент инициализирован, и вы можете выполнять взаимодействие JS (оно будет вызываться каждый раз, когда компонент будет повторно визуализирован после этого, но firstRender будет иметь значение false).Поэтому, если вы хотите загрузить значение только один раз из локального хранилища, вы можете сделать это в течение firstRender
, как показано в примере ниже.
[Parameter]
public string Test { get; set; }
protected async override Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
Test = await localStorage.GetItemAsync<string>("TEST");
}
}
С точки зрения обеспечения доступности значения для всех компонентов, вы можетелибо используйте глобальный класс состояний, либо предоставьте его через каскадный параметр.Любой из вариантов сработает, и я на самом деле не вижу один лучше другого, я бы сказал, что если вам нужно, чтобы другие биты оставались в состоянии, тогда используйте класс состояния, если нет, то, вероятно, используйте параметр каскадирования..
Согласно комментарию Мистера Магу, было бы лучше сделать это в компоненте App.razor, чтобы он загружался даже в сценариях с глубокими ссылками.