vue 中动态触发子组件,父子组件加载顺序。

vue 中在子组件中触发,父组件或其他组件 ?


解决思路:在所触发的组件上绑定  :key="timer" ,更新 timer 值,从而动态触发所有已绑定的子组件。

实例解析:再此实例中组件  Progress 和  HjcqTable 绑定 :key="timer" 属性,当改变日期值时如何重新加载组件(重发请求,数据变更)。

具体实现:在改变日期值的 getDate 函数中,this.timer = new Date().getTime()  动态触发所有已绑定的子组件。

<template>
    <div>
        <Date-Picker  @getDate="getDate($event)"></Date-Picker>
        <demo></demo>
        <Progress   :prmData="prmData" :key="timer"></Progress>
        <Hjcq-Table :prmData="prmData" :key="timer"></Hjcq-Table>
    </div>
</template>
import DatePicker from '@/components/DatePicker.vue'
import HjcqTable from '@/components/jkyj/hjcq/HjcqTable.vue'
import demo from '@/views/jkyj/demo.vue'
import Progress from '@/components/jkyj/hjcq/Progress.vue'

export default {
    data(){
        return{
            prmData:{
                startDate:'',
                endDate:''
            },
            timer:''
        }
    },
    components:{
        DatePicker,
        HjcqTable,
        demo,
        Progress
    },
    methods:{
         getDate($event){
            this.prmData.startDate = this.$formatDate(String($event[0]))
            this.prmData.endDate = this.$formatDate(String($event[1]))
            // 组件 :key="timer" 绑定, 动态触发所有已绑定的子组件
            this.timer = new Date().getTime()
        }
    }
}

vue 中父子组件加载顺序 ?


<-- 组件创建和挂载 !-->
<p>父 :beforeCreate</p>
<p>父 :created</p>
<p>父 :beforeMount</p>
<p>子 :beforeCreate</p>
<p>子 :created</p>
<p>子 :beforeMount</p>
<p>子 :mounted</p>
<p>父 :mounted</p>

<-- 组件更新 !-->
<-- 子组件若有 props 的话更新顺序是四步,若没有的话,两步不触发父亲的钩子 !-->
<p>父 :beforeUpdate</p>
<p>子 :beforeUpdate</p>
<p>子 :updated</p>
<p>父 :updated</p>

<-- 父组件更新顺序 !-->
<p>父 :beforeUpdate</p>
<p>子 :deactivated</p>
<p>父 :updated</p>

<-- 销毁过程是 !-->
<p>父 :beforeDestroy</p>
<p>子 :beforeDestroy</p>
<p>子 :destroyed</p>
<p>父 :destroyed</p>

基础的生命周期钩子:beforeCreate、created、beforeMonted、mounted、beforUpdate、update、beforDestroy、destroyed

当组件之间切换时:通常都会请求一些请求过的数据,每次请求都会导致重复渲染影响性能。使用 keep-alive 将组件包裹起来,来缓存重复请求的数据。此时以上八种生命周期钩子将失效。取而代之的时 activate 和 deactivated。

activate:是在被包裹组建被激活的状态下使用的生命周期钩子。

deactivated:在被包裹组件停止使用时调用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值