Mis*_*ook 3 blazor blazor-webassembly
覆盖 SetParametersAsync 时,如果我调用任何异步方法,则会得到“未处理的异常呈现组件:无法再读取 ParameterView 实例,因为它已过期。ParameterView 只能同步读取,不得存储以备后用。”
public override async Task SetParametersAsync(ParameterView parameters)
{
await Task.Delay(1000);
await base.SetParametersAsync(parameters);
}
Run Code Online (Sandbox Code Playgroud)
我们如何安全地调用 SetParamatersAsync 中的异步方法?
我相信您正在寻找的编码模式如下所示。错误消息是由渲染器生成的。它在通过ParameterView,跟踪它,并期望它立即(同步)被消耗。对象中的参数在一秒钟内可能非常陈旧。
在我们parameters立即使用的模式中,将其应用于组件实例属性。然后我们可以base在闲暇时打电话,传递一个空的,ParameterView因为我们已经设置了它们。
public async override Task SetParametersAsync(ParameterView parameters)
{
parameters.SetParameterProperties(this);
await Task.Delay(100);
await base.SetParametersAsync(ParameterView.Empty);
}
Run Code Online (Sandbox Code Playgroud)
public override Task SetParametersAsync(ParameterView parameters)
{
parameters.SetParameterProperties(this);
... Do things
return base.SetParametersAsync(ParameterView.Empty);
}
Run Code Online (Sandbox Code Playgroud)
这是 ASPNetCore 团队似乎使用的模式。您可以在InputBase 第 190 行以后的代码中看到它。
| 归档时间: |
|
| 查看次数: |
250 次 |
| 最近记录: |