Blazor-在EditForm.Model更改时多次创建子组件
我有一个带有子组件的razor页面 当我访问页面时,页面实例只创建了一次,而子实例创建了两次Blazor-在EditForm.Model更改时多次创建子组件,blazor,blazor-server-side,Blazor,Blazor Server Side,我有一个带有子组件的razor页面 当我访问页面时,页面实例只创建了一次,而子实例创建了两次 @page "/somepage/Id:int" <EditForm Model="Model"> <h1>Parent<h1> <Child Model="Model"/> </EditForm> @code { object Model = new object
@page "/somepage/Id:int"
<EditForm Model="Model">
<h1>Parent<h1>
<Child Model="Model"/>
</EditForm>
@code
{
object Model = new object();
public Parent()
{
//this is created once
}
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
await Task.Delay(100);
Model = new object();
}
....
}
@page”/somepage/Id:int
父母亲
@代码
{
对象模型=新对象();
公共家长()
{
//这是一次创建
}
受保护的重写异步任务OnInitializedAsync()
{
wait base.OnInitializedAsync();
等待任务。延迟(100);
模型=新对象();
}
....
}
儿童剃须刀
<h3>Child - @Id</h3>
@code {
[Parameter]
public object Model { get; set; }
public Child()
{
// created twice
}
}
Child-@Id
@代码{
[参数]
公共对象模型{get;set;}
公共儿童()
{
//创造两次
}
}
这是为什么?有没有办法避免它?当EditForm模型更改时,它会重新创建所有子控件-唯一的解决方法是不使用EditForm AFAIK。您可以将您的孩子包装在一个
@if(Model is object).
块中-这可能会阻止第一个createModel被更改两次:object Model=new object()代码>,模型=新对象()代码>