【发布时间】:2021-04-14 07:14:11
【问题描述】:
我有一个内部包含不同组件的组件,这些组件具有父组件给出的不同参数。在一个组件中,例如,一个布尔值。它从父组件获取值(true)作为参数。 如果我将子组件内的布尔值更改为 false(为 false),然后在触发 StateHasChanged 的父组件中发生某些事情,则子组件会使用来自父组件的 bool 参数进行刷新(true)。
有没有什么很酷的方法可以防止这种情况,让 bool 保持它的价值? 或者我是否必须做一个回调之类的事情,以便每次当孩子内部的布尔值发生变化时,父级内部的布尔值都会发生变化?如果我必须这样做,以下是正确的方法,还是有更简单的方法?
Parent
<TestComponent boolChanged="this.ChangeBool" MyBool="this.myBool"></TestComponent>
@code {
private bool myBool = true;
private void ChangeBool(bool change)
{
this.myBool = change;
}
}
Child
@code {
[Parameter]
public bool MyBool { get; set; }
[Parameter]
public EventCallback<bool> boolChanged { get; set; }
private async Task SetBoolFalse()
{
this.MyBool = false;
await this.boolChanged.InvokeAsync(this.MyBool);
}
}
如果有多个参数,看起来工作量很大。
【问题讨论】:
-
孩子不应该设置那个参数,你的设计有问题。考虑使用不同的 var 来存储内部状态。
标签: c# blazor blazor-server-side