请用blazor使用localstorage来保存数据
时间: 2024-03-18 16:40:36 浏览: 10
好的,以下是一个使用 Blazor 和浏览器本地存储(localStorage)来保存数据的简单示例:
1. 首先,在 Blazor 组件中引入 JavaScript 的 localStorage 对象:
```
@inject IJSRuntime JsRuntime
@code {
private IJSObjectReference _localStorage;
protected override async Task OnInitializedAsync()
{
_localStorage = await JsRuntime.InvokeAsync<IJSObjectReference>("eval", "localStorage");
}
}
```
上述代码中,我们使用 @inject 注入了 IJSRuntime 接口,并在 OnInitializedAsync 方法中调用了 JavaScript 的 eval 函数来获取 localStorage 对象的引用。
2. 接下来,在组件中定义需要保存的数据:
```
@code {
private string _myData = "";
private async Task SaveData()
{
await _localStorage.InvokeVoidAsync("setItem", "myData", _myData);
}
private async Task LoadData()
{
_myData = await _localStorage.InvokeAsync<string>("getItem", "myData");
}
}
```
上述代码中,我们定义了一个字符串类型的变量 _myData,并编写了两个方法 SaveData 和 LoadData 分别用于保存和加载数据。在 SaveData 方法中,我们使用 _localStorage 对象的 setItem 方法将数据保存到 localStorage 中;在 LoadData 方法中,我们使用 _localStorage 对象的 getItem 方法从 localStorage 中加载数据。
3. 最后,在组件中添加保存和加载数据的按钮或其他触发事件:
```
<button @onclick="SaveData">保存数据</button>
<button @onclick="LoadData">加载数据</button>
```
上述代码中,我们使用 Blazor 的 @onclick 指令将 SaveData 和 LoadData 方法与按钮的点击事件关联起来。
这样,当用户点击保存数据按钮时,数据将被保存到浏览器的 localStorage 中;当用户点击加载数据按钮时,数据将从 localStorage 中加载并更新到组件中的 _myData 变量中。