Blazor 并将 @ref 传递给组件

问题描述 投票:0回答:1

我的组件有问题,当我分配 @ref="longList Component" 时会出现错误,否则没有 @ref 一切正常。我收到错误,但在这种情况下我不知道这意味着什么。救命啊😕我昨晚输了半个星期天😕 我是初学者,所以也许我忘记了一些事情。

        <LogList @ref="logListComponent"/>    <!-- error -->

        <LogList />    <!-- ok -->```


```




```
    protected override async Task OnInitializedAsync()
    {
        logListComponent = new LogList();

    }```









 
blazor webassembly
1个回答
0
投票

您的代码中存在三个问题:

  1. 您需要为渲染器声明一个全局变量来分配实例。
<LogList @ref="logListComponent"/>

@code {
private LogList? logListComponent;
}
  1. 分配仅发生在第一次渲染中。 所以你要么像这样得到它:
    protected override async Task OnInitializedAsync()
    {
      // fake some async activity
       await Task.Yield();
      // first render has happened when we get to here so we have a ref
        logListComponent.DoSomething();
    }```
  1. 您不在渲染上下文中创建组件实例,而是由渲染器创建。

所以你可以这样做:

        logListComponent = new LogList();

但它不会执行任何操作,因为您是在[渲染上下文之外]独立创建的。

© www.soinside.com 2019 - 2024. All rights reserved.