【问题标题】:When are parameters considered different?什么时候认为参数不同?
【发布时间】:2021-03-17 10:21:31
【问题描述】:

类似于 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&lt;T&gt;,但是效果是一样的。

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

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

【问题讨论】:

    标签: blazor


    【解决方案1】:

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

    【讨论】:

    • 我知道 - 这是关于重新渲染更少,而不是更多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2022-11-13
    相关资源
    最近更新 更多