Blazor-在EditForm.Model更改时多次创建子组件

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

我有一个带有子组件的razor页面

当我访问页面时,页面实例只创建了一次,而子实例创建了两次

@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()
模型=新对象()