zoukankan      html  css  js  c++  java
  • Daily question

    1、Vue父组件可以监听到子组件的生命周期吗?如果能请写出你的实现方法

    1)实现方法一

    比如有父组件 Parent 和子组件 Child ,如果父组件监听到子组件挂载 mounted 就做一些逻辑处理,可以通过以下写法实现:

    // Parent.vue
    <Child @mounted="doSomething"/>
    
    // Child.vue
    mounted(){
       this.$emit("mounted");
    }

    2)实现方法二

    以上需要手动通过 $emit 触发父组件的事件,更简单的方式可以在父组件引用子组件时通过 @hook 来监听即可,如下所示:

    // Parent.vue
    <Child @hook:mounted="doSomething" />
    
    doSomething(){
       console.log('父组件监听到 mounted 钩子函数...');
    },
    
    // Child.vue
    mounted(){
       console.log('子组件触发 mounted 钩子函数...');
    }
    
    // 以上输出顺序为:
    // 子组件 触发 mounted 钩子函数...
    // 父组件监听到 mounted 钩子函数...

    当然 @hook 方法不仅仅是可以监听 mounted,其他的生命周期事件,例如: created,updated 等都可以监听。

    2、apply,call,bind的区别

    使用apply,call,bind

    使用 apply、call、bind 函数是可以改变 this 的指向的

    apply 和 call 的区别

    其实 apply 和 call 基本类似,他们的区别只是传入的参数不同。

     call 方法接受的是若干个参数列表,而 apply 接收的是一个包含多个参数的数组

    apply/call 与 bind 的区别

    我们先来将刚刚的例子使用 bind 试一下

    我们会发现并没有输出,这是因为:

    bind()方法创建一个新的函数, 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。

    所以我们可以看出,bind 是创建一个新的函数,我们必须要手动去调用:

    【注意】

    apply/call 改变了函数的 this 上下文后马上执行该函数

    bind 则是返回改变了上下文后的函数,不执行该函数

  • 相关阅读:
    db2构建临时结果集
    db2 in out inout
    杂文Python
    db2记录去重
    oop设计模式抽象总结
    Linux 查看发行版版本信息和内核版本
    第二节课:功能测试需求分析方法
    mybatis or的用法
    java中&& 的运算优先级高于||
    下载根目录下的pdf文件, 浏览器下载
  • 原文地址:https://www.cnblogs.com/rachelch/p/13231755.html
Copyright © 2011-2022 走看看