Blazor:是否可以针对特定参数触发OnParametersSet方法?

问题描述 投票:0回答:2

如果有一个 Blazor 组件并且它具有三个参数,是否可以仅在三个参数之一发生更改时才触发 OnParametersSet 方法中的逻辑?有没有办法检查 OnParametersSet 内哪些参数被更改?

c# asp.net-core server blazor lifecycle
2个回答
0
投票

您可以尝试使用 c# 属性 {get;set;} 在设置参数时触发操作。尝试以下操作: 儿童剃须刀

//disable prerender here, or prameter will set twice.
@rendermode @(new InteractiveServerRenderMode(false))

@Para1

@code {
    private string para1;
    [Parameter]
    public string? Para1 
    {
        get
        {
            return this.para1;
        }
        set
        {
            MyAction(); 
            para1 = value;
        } 
    }

    private void MyAction()
    {
        Console.WriteLine("action when para1 is set");
    }
}

Home.剃须刀

@page "/"
<Child Para1="test"></Child>

测试


0
投票

您可以在

SetParametersAsync

中执行类似的操作
    [Parameter] public int MessageId { get; set; }
    [Parameter] public string? Text { get; set; }

    private int _messageId;
    private bool _notFirstRender;

    public override Task SetParametersAsync(ParameterView parameters)
    {
        parameters.SetParameterProperties(this);

        if (this.MessageId == _messageId && _notFirstRender)
            return Task.CompletedTask;

        _messageId = this.MessageId;
        _notFirstRender = true;

        // Run the lifecycle events
        return base.SetParametersAsync(parameters);
    }
© www.soinside.com 2019 - 2024. All rights reserved.