是否阻止在StateHasChanged之后重新加载子组件



我有一个组件,里面有不同的组件,父组件给出了不同的参数。例如,在一个组件中是布尔值。它从父组件获取值(true(作为Parameter。如果我将子组件内部的布尔值更改为false,然后在父组件中发生触发StateHasChanged的事情,则子组件将使用父组件中的bool Parameter(true(刷新。

有没有什么很酷的方法可以防止这种情况发生,从而使bool保持其值?或者我必须做一些类似回调的事情,这样每当子对象中的bool发生变化时,父对象中的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);
}
}

如果有多个参数,看起来工作量很大。

子组件(TestComponent(

@code {
private bool myBool; 
[Parameter]
public bool MyBool { get; set; }
[Parameter]
public EventCallback<bool> MyBoolChanged { get; set; }
protected override void OnParametersSet()
{
myBool = MyBool;
}
private async Task SetBoolFalse()
{
myBool = false;
await MyBoolChanged.InvokeAsync(myBool);
}
}

父组件

<div>@myBool.ToString()</div>
<TestComponent @bind-Value="myBool"/>
@code {
private bool myBool = true;
}

注意:永远不要改变参数的状态。参数特性仅用于零部件之间的数据流动。您应该定义一个局部变量(myBool(来维护您的状态。请注意,我使用OnParametersSet生命周期方法中myBool参数属性的值初始化变量myBool。

相关内容

  • 没有找到相关文章

最新更新