Blazor OnInitializedAsync方法在更改查询字符串值时未获得调用
我正在开发Blazor服务器端应用程序,并且有一个动态菜单绑定的标题。还有一个分类页面,我在其中根据标题菜单中已经绑定的查询字符串显示数据 OnInitializedAsync方法在我选择菜单后被调用,类别页面代表查询字符串值显示数据,但我再次打开菜单并选择不同的产品,则类别页面未被调用 下面是标题菜单的代码 Header.razor(在主布局页面上注册)Blazor OnInitializedAsync方法在更改查询字符串值时未获得调用,blazor,blazor-server-side,blazor-webassembly,Blazor,Blazor Server Side,Blazor Webassembly,我正在开发Blazor服务器端应用程序,并且有一个动态菜单绑定的标题。还有一个分类页面,我在其中根据标题菜单中已经绑定的查询字符串显示数据 OnInitializedAsync方法在我选择菜单后被调用,类别页面代表查询字符串值显示数据,但我再次打开菜单并选择不同的产品,则类别页面未被调用 下面是标题菜单的代码 Header.razor(在主布局页面上注册) @if(categoryDtos==null) { 加载。。。 } 其他的 { @foreach(分类中的var类别) { } } 公
@if(categoryDtos==null)
{
加载。。。
}
其他的
{
@foreach(分类中的var类别)
{
}
}
公共类标题库:组件库
{
[注入]公共IToastService到ASTService{get;set;}
[Inject]ICategoryService类别服务{get;set;}
公共列表类别{get;set;}
受保护的异步重写任务OnInitializedAsync()
{
var categoryLIst=await categoryService.GetCategories();
if(categoryLIst.Data!=null)
{
categoryDtos=categoryLIst.Data.ToList();
toastService.showsucture(“获取成功”);
}
其他的
{
toastService.bathror(categoryLIst.Message);
}
}
}
Product.razor页面
@page "/category/{categoryID}"
<ul class="sidebar_categories">
@if (categoryTypeDtos == null)
{
<div>Loading...</div>
}
else
{
@foreach (var category in categoryTypeDtos)
{
<li><a href="#">@category.Name</a></li>
}
}
</ul>
public class CategoryBase : ComponentBase
{
[Inject] public IToastService toastService { get; set; }
[Parameter] public string categoryID { get; set; }
[Inject] ICategoryService categoryService { get; set; }
public List<CategoryTypeDto> categoryTypeDtos { get; set; }
protected async override Task OnInitializedAsync()
{
var response = await categoryService.GetCategoryTypeByID(Guid.Parse(categoryID));
if (response.Data != null)
{
categoryTypeDtos = response.Data.ToList();
toastService.ShowSuccess("Fetch successfully");
}
else
{
toastService.ShowError(response.Message);
}
}
}
@page”/category/{categoryID}
@if(categoryTypeDtos==null)
{
加载。。。
}
其他的
{
@foreach(categoryTypeDtos中的var类别)
{
}
}
公共类类别库:ComponentBase
{
[注入]公共IToastService到ASTService{get;set;}
[参数]公共字符串categoryID{get;set;}
[Inject]ICategoryService类别服务{get;set;}
公共列表类别TypedTos{get;set;}
受保护的异步重写任务OnInitializedAsync()
{
var response=await categoryService.GetCategoryTypeByID(Guid.Parse(categoryID));
if(response.Data!=null)
{
categoryTypeDtos=response.Data.ToList();
toastService.showsucture(“获取成功”);
}
其他的
{
toastService.bathror(response.Message);
}
}
}
只有在首次创建组件或页面时才会调用OnInitialized
呈现相同组件的新url将使用该实例。您需要使用OnParametersSetAsync
@page "/category/{categoryID}"
<ul class="sidebar_categories">
@if (categoryTypeDtos == null)
{
<div>Loading...</div>
}
else
{
@foreach (var category in categoryTypeDtos)
{
<li><a href="#">@category.Name</a></li>
}
}
</ul>
public class CategoryBase : ComponentBase
{
[Inject] public IToastService toastService { get; set; }
[Parameter] public string categoryID { get; set; }
[Inject] ICategoryService categoryService { get; set; }
public List<CategoryTypeDto> categoryTypeDtos { get; set; }
protected async override Task OnInitializedAsync()
{
var response = await categoryService.GetCategoryTypeByID(Guid.Parse(categoryID));
if (response.Data != null)
{
categoryTypeDtos = response.Data.ToList();
toastService.ShowSuccess("Fetch successfully");
}
else
{
toastService.ShowError(response.Message);
}
}
}