【发布时间】:2021-05-05 09:28:16
【问题描述】:
问题:
当用户刷新页面然后更改数据网格的布局时,没有LayoutChanged 事件。在刷新之前,事件触发就好了。
嫌疑人:
在我的 razor 组件中是一个围绕整个 html 的 if 条件,它检查基本组件是否已初始化,因为 LayoutRestoring 事件在网格初始化时触发,但我需要基本组件处理的一些数据。当我删除 if 条件时,LayoutChanged 事件即使在刷新后也能正常触发。
我为什么这样做:
balzor 在 OnInitializedAsync 方法中执行第一个 await 之前以及在 OnInitializedAsync 方法完成之后渲染一个组件。当数据网格初始化时,LayoutRestoring 事件被触发,但是为了加载正确的布局,我需要一些基本组件处理的信息。我无法将基本组件中的功能移动到我的组件中,并且用户不应按下按钮来保存当前布局。
【问题讨论】:
-
关于组件生命周期和渲染存在一些误解。只有一个固定电话给
StateHasChanged。这发生在SetParametersAsync完成时 - 组件刷新周期的同步部分结束。还有另外两个对StateHasChanged的条件调用。一个处于初始化阶段,仅在OnInitializedAsync产生但未完成时运行。第二个在参数集中,仅在OnParametersSetAsync产生但不完整时运行。它在 Microsoft 图表中明确说明。 -
我找到了解决方案。这是 DevExpress 代码中的一个错误。 supportcenter.devexpress.com/versionhistory
-
好的,你需要关闭这个问题。
标签: c# asp.net-core devexpress blazor blazor-server-side