@code { public class TreeData { -6ren">
gpt4 book ai didi

blazor - 是否可以在 Blazor 中为父组件和子组件指定两个不同的类型参数值?

转载 作者:行者123 更新时间:2023-12-04 11:14:48 24 4
gpt4 key购买 nike

请引用以下代码块。对于该代码块,我尝试将父组件值访问到子组件中,但它始终在子组件中返回空值。

<Parent TValue="TreeData">
<Child TValue="TreeNode<TreeData>"></Child>
</Parent>

@code {
public class TreeData
{
public string Value { get; set; }
}
public class TreeNode<TreeData>
{
public int Count { get; set; }
}
}

**Parent Component:**

<CascadingValue Value="@this">
@ChildContent
</CascadingValue>

**Child Component:**

@code {
[CascadingParameter]
private Parent<TValue> ParentObj { get; set; }
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
//Parent obj always returns the null value
ParentObj?.UpdateChildProperties("UpdateData", this);
}
}

最佳答案

一些需要考虑的一般事项:

  • 确保您的子组件(或您的 _Imports.razor)具有该命名空间的 using 语句。
  • child 中的 [CascadingParameter] 必须是 public。
  • 将 [CascadingParameter] 的类型设为父级的名称(不带 .razor)
  • 如果您有多种不同的类型想要作为级联参数传递,那么只需在子级中创建另一个 [CascadingParameter] 即可。
  • 如果他们需要在子组件中使用相同的 [CascadingParameter],那么所有被传递的类型都必须从同一个类 (.razor) 继承。这个 .razor 可以是空的,只要确保包含 @inherits(无论您的基类型是什么)并使子中的 [CascadingParameter] 类型成为基的类型,并且在初始化时您可以检查类型并进行转换如果需要的话。

  • 我相信做这些事情应该可以解决这个问题,但正如柯蒂斯在评论中提到的那样 - 很难按照分离的方式来遵循这段代码。

    关于blazor - 是否可以在 Blazor 中为父组件和子组件指定两个不同的类型参数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68937400/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com