首页 > 解决方案 > 什么时候认为参数不同?

问题描述

类似于 React Blazor 在其参数(React 中的“props”)更改时重新渲染子组件。

对于原始类型,这可以按预期工作,但我还没有弄清楚如何控制自定义类型。

似乎简单的对象总是被认为是不同的,即使对象没有改变:

@page "/"

<h1>Hello, world!</h1>

<Nested Object="@myObject" />

<button @onclick="() => { }">clickme</button>

@code {
    private Object myObject = new object();
}

在这里,Nested组件总是在按钮单击时重新渲染,即使它的唯一参数Object永远不会改变。

我定义Nested

<h3>
     (last render at @DateTime.Now.TimeOfDay)
</h3>

@code {
    [Parameter]
    public Object Object { get; set; }
}

只需观察它何时重新渲染。

我也尝试定义一个新的类型来覆盖EqualsGetHashCode实现IEquatable<T>,但效果是一样的。

React 不会为了重新渲染的目的而认为引用相等的对象是不同的。

如何在不将子组件的重新渲染与父组件的重新渲染结合的情况下将非原始数据传递给子组件?

标签: blazor

解决方案


StateHasChanged()每当属性更改可能导致 UI 更改时,您都应该调用方法。


推荐阅读