blazor - 什么时候认为参数不同?
问题描述
类似于 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; }
}
只需观察它何时重新渲染。
我也尝试定义一个新的类型来覆盖Equals
和GetHashCode
实现IEquatable<T>
,但效果是一样的。
React 不会为了重新渲染的目的而认为引用相等的对象是不同的。
如何在不将子组件的重新渲染与父组件的重新渲染结合的情况下将非原始数据传递给子组件?
解决方案
StateHasChanged()
每当属性更改可能导致 UI 更改时,您都应该调用方法。
推荐阅读
- javascript - 如何通过 API 修补 Azure Devops 上的测试结果
- vim - 如何在 Vim 中通过 *.log 中的路径打开另一个文件
- c# - c# NPOI Excel设置页码
- nginx - 通过 NGINX 替换请求参数中的指定字符
- ontology - OWL本体的可扩展性(是大还是小)
- android - 获取已安装应用列表
- python - Windows 上 PySCIPOpt 的安装问题
- java - 如何在运行时根据用户输入和基本逻辑规则生成 JSON 字符串?
- localization - 为什么会出现这个错误?dotnet core mvc 本地化
- android - 如果填充了输入,则更改edittext的背景颜色