zoukankan      html  css  js  c++  java
  • Blazor入手教程(六)组件的生命周期

    Blazor入手教程(六)组件的生命周期

    Blazor中组件的生命周期和vue十分相似:大体上说都是创建,渲染,然后监听变量的改变重新渲染,最后销毁,当然细节上还是各有不同的。

    Vue组件的生命周期

    Blazor组件的生命周期

     

     

     

     

      

    Blazor组件生命周期

    可覆写方法

    说明

    无可重写方法

    创建组件实例

    SetParametersAsync

    每次参数注入时或在父级被修改时调用。即从父级传过来的参数,或者祖先级传过来的级联参数,或者路由参数。在初始化之前,接受一个ParameterView类型参数,可枚举。

    OnInitialized/OnInitializedAsync

    初始化,参数注入完成后

    OnParametersSet/OnParametersSetAsync

    每次参数设置之后调用,完成之后开始渲染组件,如果是异步则等待完成后渲染

    OnAfterRender /OnAfterRenderAsync

    每次渲染结束后调用,接受一个参数firstRender表示是否是首次渲染,只有在首次渲染是是true,其余均是false。

    ShouldRender

    除了首次每次渲染完成后调用,返回一个bool值,表示是否进行渲染

      

    每次渲染完成后调用,接

    只有OnInitialized/OnInitializedAsync是只调用一次的,其他的都有可能调用多次。

    框架里面的生命周期本来是没有销毁的。但是你可以通过组件继承IDispose接口来自定义组件的释放。

      

    单个页面的生命周期

     

    嵌入子组件时父组件和子组件Modal的各自的生命周期

     

    Blazor页面可以覆写这些方法。

    @page "/lifecycle" 
    
    <h3>生命周期</h3>
    
    @code {
    
    
        public override Task SetParametersAsync(ParameterView parameters)
        {
    
            Console.WriteLine("SetParametersAsync ParameterView=" + parameters);
            foreach (var item in parameters)
            {
                Console.WriteLine("parameters item.Name=" + item.Name + ",item.Value=" + item.Value);
    
            }
    
    
            return base.SetParametersAsync(parameters);
    
    
        }
    
        protected override void OnInitialized()
        {
    
            Console.WriteLine("OnInitialized");
            base.OnInitialized();
        }
    
        protected override Task OnInitializedAsync()
        {
            Console.WriteLine("OnInitializedAsync");
            return base.OnInitializedAsync();
    
        }
    
        protected override void OnAfterRender(bool firstRender)
        {
    
            Console.WriteLine("OnAfterRender firstRender=" + firstRender);
            base.OnAfterRender(firstRender);
        }
    
    
        protected override Task OnAfterRenderAsync(bool firstRender)
        {
            Console.WriteLine("OnAfterRenderAsync firstRender=" + firstRender);
            return base.OnAfterRenderAsync(firstRender);
        }
    
    
        protected override void OnParametersSet()
        {
            Console.WriteLine("OnParametersSet");
            base.OnParametersSet();
        }
    
        protected override Task OnParametersSetAsync()
        {
            Console.WriteLine("OnParametersSetAsync");
            return base.OnParametersSetAsync();
        }
        //
        // 摘要:
        //     Returns a flag to indicate whether the component should render.
        protected override bool ShouldRender()
        {
            Console.WriteLine("ShouldRender");
            return base.ShouldRender();
        }
    }
  • 相关阅读:
    CodeVs 1295 N皇后问题
    POJ 3349 Snowflake Snow Snowflakes
    链表API
    Hash API
    CodeVS 1220 数字三角形
    CodeVS 1045 回文数
    CodeVS 1058 合唱队形(DP--最长子序列问题)
    CodeVS 1018 单词接龙(DFS)
    关于图覆盖问题习题BY石家名
    软件测试作业(二)
  • 原文地址:https://www.cnblogs.com/jimsfriend/p/14017085.html
Copyright © 2011-2022 走看看