来自React JS,我想知道Blazor是否有State和Property的概念。请看下面的代码:
<div>@field</div>
<button @onclick=@(() => field = Random.Shared.Next())>Change field</button>
<div>@Prop</div>
<button @onclick=@(() => Prop = Random.Shared.Next())>Change prop</button>
@code {
private int field;
[Parameter]
public int Prop { get; set; }
}
field
和Prop
之间绝对没有区别,除了可以从父模板设置Prop
。我还没能创建一个不能在组件内更新的属性,因为需要公共setter。
似乎要由团队来决定在组件内更新属性是否有意义。
这方面是否有约定/最佳实践/指南?
这方面是否有约定/最佳实践/指南?
Yes:不可以。
大多数"官方"都在这里的文档中:
我们的一般指导原则是不要创建在组件第一次呈现后直接写入自己的参数的组件。
:
一般来说,避免创建直接写入自己的组件参数的组件. ...
但这在很多地方被重复和解释。