• 【Vue】组件之间的方法调用


    组件之间的方法调用包括:

    • 子组件调用父组件的方法
    • 父组件调用子组件的方法
    • 无关联组件之间的方法调用

    下面来详细学习三种组件之间的方法调用。

    子组件调用父组件的方法

    子组件调用父组件时需要先访问父组件实例,Vue.js中提供了$parent property 供子组件访问父组件的实例。
    $parent是指组件树的根实例,如果组件没有根实例则表示它自己。
    通过$parent既可以方法父组件的方法和属性,又可以修改父组件的方法和属性。
    用法:
    假设父组件中有属性name和方法parentPrint,在子组件中调用如下:

    //获取父组件name值
    console.log(this.$parent.name);
    //修改父组件name值
    this.$parent.name ="ssss";
    this.$parent.parentPrint();
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果子组件被父组件嵌套调用,子组件如果想要访问最外层的父组件的实例,则需要多个this.$parent.$parent...$parent直到访问到最外层的父组件,这种调用方式容易出现问题,因此不常使用。

    父组件调用子组件的方法

    在父组件中如果想要访问子组件的实例,可以在父组件中通过ref为子组件创建一个id引用
    在父组件中调用子组件:

    <base-input ref="usernameInput">base-input>
    
    • 1

    调用子组件的方法:

    this.$refs.usernameInput.方法();
    
    • 1

    但是$refs只会在组件渲染完成之后生效,并且它们不是响应式的。这仅作为一个用于直接操作子组件的“逃生舱”——你应该避免在模板或计算属性中访问 $refs

    父组件向子组件传递数据
    在子组件中通过props定义数据类型,父组件调用子组件时通过v-bind(或:)将数据绑定传递给子组件
    子组件修改父组件的属性
    子组件修改父组件的属性,可以通过以下更新父组件的属性

    this.$emit('update:parentProp',prop)
    
    • 1

    Vue通过prop进行双向数据绑定。子组件数据变化,一般只能通过 this.$emit(func, val) 回调父组件函数来传值给父组件。
    Vue2.3版本引入sync,作为一个事件绑定语法糖,当子组件触发事件时,父组件会响应事件并实现数据更新。
    父组件:

     <parent-comp :visible.sync="isShow">parent-comp>
    
    • 1

    子组件:

    props: {
        visible: {
          type: Boolean,
          default: false
        }
      },
      methods: {
        // 子组件触发函数
        handleClose() {
          this.$emit('update:visible', false)
        },
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    .Net Core中无处不在的Async/Await是如何提升性能的?
    Java抽象类和普通类区别、 数组跟List的区别
    什么是快应用?与原生APP相比优势在哪里
    数据库系统原理与应用教程(046)—— MySQL 查询(八):分组查询(GROUP BY)
    【623. 在二叉树中增加一行】
    人工智能、深度学习、机器学习常见面试题71~82
    vue完成模板下载
    清水混毒【逻辑题】
    Chapter13 : Ultrahigh Throughput Protein-Ligand Docking with Deep Learning
    MongoDB的聚合笔记
  • 原文地址:https://blog.csdn.net/u011133007/article/details/126111409