【发布时间】:2021-10-11 03:28:42
【问题描述】:
我的主页有两个组件——状态和命令。问题是状态组件应该获得对组件之一的引用。根据我的阅读,我可以使用级联参数来实现我的目标。
主页:
<CascadingValue Value="commands">
<States @ref="states"></States>
</CascadingValue>
<Commands @ref="commands"></Commands>
@code
{
private Commands commands;
private States states;
...
状态组件:
@code {
[CascadingParameter]
public Commands Commands { get; set; }
}
理论上它应该可以工作,在视觉上它们被正确渲染,但在引擎盖下它不起作用 - 状态组件接收“null”的命令,所以基本上它不会“看到”其他组件。
这里是“有趣”的部分——正如我写的状态组件接收 null,但如果我在主页中引用命令组件,就像 Blazor 意识到它已经设置并且是时候将新值传递给状态事实上,国家收到非空值。一些滞后效应还是什么?
当然我想让它自动发生。怎么做?
视觉顺序没有任何区别,当我先放在主页命令时,然后状态我得到完全相同的结果。
解决方法:
我知道的最简单的解决方法是(我使用示例中的名称)将支持字段添加到“命令”并将“命令”更改为属性。每当调用 setter 时,只需在最后调用 StateHasChanged 即可。
【问题讨论】:
-
你想达到什么目的?您想访问
States中的Commands数据吗? -
@AndrasCsanyi,是的,完全正确。对于各种操作,States 需要通知 Commands,所以基本上 Commands 对 States 一无所知,但 States 知道并且需要访问 Commands。
-
我也会看看this 和事件处理程序解决方案。
-
@AndrasCsanyi 我很困惑——我展示了级联参数有滞后效应,你发布了一个级联参数的链接。这对解决问题有何帮助?
-
如果这没有帮助,那么我关于事件的答案的第二部分可能会有所帮助。
标签: c# blazor blazor-webassembly