首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前组件更新父级

前组件更新父级
EN

Stack Overflow用户
提问于 2022-09-18 20:21:05
回答 2查看 64关注 0票数 0

我的剃须刀页上有这个:

代码语言:javascript
复制
 @foreach (AanmeldingItem ai in Aanmeldingen.Aanmeldingen)
      {
        <NieuweAanmeldingScherm Aanmelding=@ai SL=@SL />
      }

组件"NieuweAanmeldingScherm“有一堆div和inputtexts来收集一些数据。在与前面相同的页面上,我有一个按钮来添加一个新项目。当我单击此按钮时,它将一个新的"AanmeldingItem“添加到"Aanmeldingen.Aanmeldingen”中,这是"AanmeldingItem“的列表。

我的问题是,当我输入一些数据时,它不会被更新到列表中的项中。

这在Blazor是如何工作的(我刚刚开始)?

所以基本上:

代码语言:javascript
复制
@foreach (MyClass myclass in MyClasses) 
{
  <MyComponent Myclass=@myclass />
}

MyComponent:

代码语言:javascript
复制
<InputText @bind-value=@myclass.item1 />
<InputText @bind-value=@myclass.item2 />

@code 
{
  [parameter]
  public MyClass myclass {get;set;}

}

在包含foreach循环的页面上添加按钮:

代码语言:javascript
复制
<div class="form-control nieuwAanmeldItem" @onclick="NieuwItem" />

我如何使它,以便MyClasses是更新的信息,从输入?

EN

回答 2

Stack Overflow用户

发布于 2022-09-18 23:27:17

您的循环缺少一个@key指令,它提供了一种在呈现时标识组件每个实例的方法。

代码语言:javascript
复制
@foreach (AanmeldingItem ai in Aanmeldingen.Aanmeldingen)
{
  <NieuweAanmeldingScherm @key=ai Aanmelding=@ai SL=@SL />
}

在这里,我使用了AanmeldingItem实例作为键,但是如果该类具有合适的唯一int,string或其他一些简单类型,则使用它代替它,因为这样会提高性能。

票数 0
EN

Stack Overflow用户

发布于 2022-09-19 07:00:12

我知道我做错了什么。

Mister Magoo的答案并不是真正需要的,但我还是实现了它。根据微软的说法,它应该会自动工作,但现在我确信它可以工作了。

问题是我重新初始化了"NieuwAanmeldingScherm“上的参数。这导致从父进程中切断与列表的链接。

所以我就是这么做的:

代码语言:javascript
复制
  [Parameter]
  public AanmeldingItem Aanmelding { get; set; }

  protected override void OnInitialized()
  {
    Aanmelding = new AanmeldingItem();    

    base.OnInitialized();
  }

这是错误的,因为参数已经在父级中初始化了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73766147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档