相关文章推荐
想出国的大象  ·  vue ...·  3 周前    · 
无聊的莴苣  ·  Vue 中 $set() 与 ...·  2 周前    · 
坚韧的跑步鞋  ·  Layui ...·  2 周前    · 
挂过科的镜子  ·  VUE 使用 select ...·  2 周前    · 
痴情的橙子  ·  azureml.core.dataset.D ...·  1 年前    · 
听话的猴子  ·  IDEA ...·  1 年前    · 

怎么办?怎么才能让row悄悄给col传值?用mounted钩子函数!

父子组件里钩子函数执行顺序

created()这个钩子表示在内存中生成对象,类似于const div = document.createElement('div')

mounted()这个钩子表示把对象挂载在页面上, 类似于 document.body.appendChild(div)

我们再来分析一下父组件row 和子组件 col 的created和Mounted的执行顺序:

分别在两者的钩子函数里打log可以得到:

所以,顺序就是,先在内存里创建爸爸,再在内存里创建儿子,然后把儿子挂到爸爸身上,然后把爸爸挂到body上

所以我们可以利用这一特点,在父组件的mounted函数里,找到儿子,然后把数据传给他

row.vue
mounted() {
      this.$children.forEach((vm)=>{
        vm.$data.gutter = this.gutter

实现响应式

目标:在不同的页面宽度实现不同的布局

方法是传入一个phone 对象,里面覆盖已有的span和offset

<m-row gutter="20"> <m-col span="4" offset="2" :phone="{span:12, offset:4}">1</m-col> <m-col span="20" offset="2" :phone="{span:12, offset:4}">2</m-col> </m-row>

我们需要判断传入的对象是否是{span:xxx, offset:xxx}的子集

@Prop({
      validator(value: Record<string, number | string>) {
        const keys = Object.keys(value);
        let valid = true;
        keys.forEach(key => {
          if (!['span', 'offset'].includes(key)) {
            valid = false;
        return valid;
    }) phone: Record<string, number | string> | undefined;

本文为fjl的原创文章,著作权归本人和饥人谷所有,转载务必注明来源

分类:
前端
标签: