• 【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
  • 相关阅读:
    css知识学习系列(8)-每天10个知识点
    java毕业设计网上汽车售票系统源码+lw文档+mybatis+系统+mysql数据库+调试
    两化融合企业申报奖励制度
    UDS02-根据标识符读取数据服务【ServiceID = 0x22】
    Github每日精选(第28期):Swift图像下载库 Kingfisher
    使用ffmpeg和sdl播放视频实现时钟同步
    Python中的def函数
    DTCloud 复杂字段类型
    【MySQL集群二】使用MyCat和ProxySql代理MySQL集群
    基于springboot实现应急救援物资管理系统项目【项目源码】计算机毕业设计
  • 原文地址:https://blog.csdn.net/u011133007/article/details/126111409