美文网首页前端开发那些事儿
vue--三种组件中之间的传值

vue--三种组件中之间的传值

作者: 为光pig | 来源:发表于2020-12-11 16:05 被阅读0次

一、父子组件之间的传值----props/$emit

组件之间的传值,我们比较常用到的是props/$emit

1、父组件向子组件传值--props

这里我们在父组件中定义的extensionObj是一个对象

<Extension :extensionObj="extensionObj"/>
data(){
    return{
        extensionObj: {},
    }
}

在子组件中接收值

props:{
    extensionObj: {
        type: Object,
        default: {}
    },
},

2、子组件向父组件传值

子组件:

<col @click="tableClickBtn(item)"></col>

写个方法触发

tableBtnClick(item){
    this.$emit('select',item);
}

父组件:

<StaffDialog ref="staffDialogRef" @select="staffDialogSelect"/>

写个方法接收

staffDialogSelect(item) {
    this.searchObj = item;
}

二、父组件向下(深层)子组件传值----provide/inject

这里引用vue官网文档里的话

类型:

provide:Object | () => Object
inject:Array<string> | { [key: string]: string | Symbol | Object }
详细:

provide 和 inject 主要在开发高阶插件/组件库时使用。并不推荐用于普通应用程序代码中。

provide 选项应该是一个对象或返回一个对象的函数
inject 选项应该是:

一个字符串数组,或
一个对象,对象的 key 是本地的绑定名,value 是:
在可用的注入内容中搜索用的 key (字符串或 Symbol),或
一个对象,该对象的:
from property 是在可用的注入内容中搜索用的 key (字符串或 Symbol)
default property 是降级情况下使用的 value

// 父级组件提供 'foo'
var Provider = {
  provide: {
    foo: 'bar'
  },
  // ...
}

// 子组件注入 'foo'
var Child = {
  inject: ['foo'],
  created () {
    console.log(this.foo) // => "bar"
  }
  // ...
}

父组件中getCustInfo为接口返回的数据

provide(){
    return {
        getCustInfo: this.getCustInfo
    }
},

子组件接收

inject: ['getCustInfo'],

这里的getCustInfo也可以个是一个方法,返回一个函数

methods:{
    getCustInfo(){
        return this.custInfo; //custInfo是接口返回的数据
    }
}

那么,子组件的接收应该这样

custInfo(){
    return this.getCustInfo();
},

三、访问父、子组件----ref、parent/child

1、ref--在父组件中访问子组件

引用官网api:

尽管存在 prop 和事件,有的时候你仍可能需要在 JavaScript 里直接访问一个子组件。为了达到这个目的,你可以通过 ref 这个 attribute 为子组件赋予一个 ID 引用。例如:

<base-input ref="usernameInput"></base-input>

现在在你已经定义了这个 ref 的组件里,你可以使用:

this.$refs.usernameInput

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

2、父、子组件之间的访问

引用官网api:

指定已创建的实例之父实例,在两者之间建立父子关系。子实例可以用 this.parent 访问父实例,子实例被推入父实例的children 数组中。

节制地使用 parent 和children - 它们的主要目的是作为访问组件的应急方法。更推荐用 props 和 events 实现父子组件通信

这里组件之间的访问,目前实战中用到的较少。按官网的话,就是不太建议使用。

相关文章

  • Vue.js 父子组件传值 . 兄弟组件传值

    概述 vue中组件之间的传值传值情况主要有以下三种 父组件向子组件传值子组件向父组件传值兄弟组件之间相互传值或者是...

  • vue--三种组件中之间的传值

    一、父子组件之间的传值----props/$emit 组件之间的传值,我们比较常用到的是props/$emit 1...

  • 与Vue.js的第八天

    今天学习了Vue组件中的非父子之间的传值和生命周期Vue组件之间的传值分三种1.父传子之间传值用属性:props2...

  • 07-组件之间的传值:父组件给子组件传值

    组件之间的传值分为三种传值方式 1.父组件传值给子组件:使用属性传 props['自定义属性名']2.子组件传...

  • 组件之间的传值

    组件之间的传值,包括父子组件传值,兄弟组件之间的传值,其中父子组件包括父组件向子组件传值和子组件向父组件传值,现在...

  • 03-vue组件传值

    基于现在都是模块化开发,vue开发过程中组件之间传值是必不可少的,常用的vue的组件传值分为三种方式:父传子、子传...

  • 组件与组件、页面之间的通信

    一、props传值 props传值在WePY中属于父组件与子组件之间(包括页面与其子组件之间)传值的一种机制,包括...

  • Vue中组件之间的通信

    在vue中,最基本的组件之间的传值,分为三种:1.父传子 2.子传父 3.兄弟相传 那么这三种方式如何传值呢? 下...

  • vue2.0的三种常用传值方式,并且如何实现?

    vue2.0 组件传值方式有三种:父组件向子组件传值,子组件向父组件传值,非父子组件传值 : 父传子: 首先现在父...

  • 组件通信

    vue传值可分为父子之间传值、兄弟组件之间传值、跨代组件之间传值 1.父子之间传值:可以使用$emit/props...

网友评论

    本文标题:vue--三种组件中之间的传值

    本文链接:https://www.haomeiwen.com/subject/wqwjgktx.html