Сохранение состояния компонента после обновления - PullRequest
0 голосов
/ 28 января 2019

Здравствуйте, мне интересно, как вы можете сохранить состояние переменной компонента в Blazor, не используя разные страницы.Допустим, у меня есть страница Parent, содержащая компонент Login:

Логин

 @functions()
   {
   public Action<string>onlogin{get;set;}  //some logic that triggers this event to the parent , ---not important
   }

Main

@if(this.id==string.Empty)
{
<Login onlogin="@((value)=>OnLoginEvent(value))"></Login>
}

@functions()
{
 public string id{get;set;}=string.Empty;
 public void OnLoginEvent(string value)
 {
   this.id=value;
 }

Теперь, как вы можете видеть, при первом рендеринге компонента Main и входе в систему id станет отличаться от string.Empty, поэтому компонент Login исчезнет.Однако, если я обновляю страницу, я все еще возвращаюсь с обработанным компонентом login, поэтому id сбрасывается.

Могу ли я каким-то образом сохранить состояние переменной Component даже после обновления?В этом случае я хочу, чтобы id не был string.Empty даже после обновления?

PS Я не хочу использовать разные страницы, и я думал, что это решение для хранениязначение id в service, которое вводится. Есть ли другой способ?

1 Ответ

0 голосов
/ 28 января 2019

Служба была бы хорошим способом решения вашей проблемы, как вы и сделали.Но другой вариант будет использовать браузер локальное хранилище.Это сохранит ваши данные очень надежным способом.Вы можете использовать такую ​​библиотеку, как эта BlazoredLocalStorage (полное раскрытие, я автор).

Этот метод сохранит данные вне сеанса пользователя, хотя, например, пользователь может закрыть браузер и вернуться через день, и данные все равно будут присутствовать.Так что вам придется справиться с этим.Но именно столько SPA-приложений решают эту проблему.

...