Vue组件(Vue2)

发布于:2025-07-09 ⋅ 阅读:(13) ⋅ 点赞:(0)

1、组件传值(通信)的方式?

1、父传子

方法一、

父传:

<ChildVue :message="msg" ></ChildVue>

子接收:

props: {

    message: {

      type: String,

      required: true

    }

  }

无法修改

方法二、

通过this.$parent.xxx可以直接获取还可以修改父组件的值

2、子传父

方法一、

子用自定义事件进行传递, this.$emit('change', '子组件向父组件发送事件')

父组件的接收: <ChildVue  @change="bth"></ChildVue>(

methods:{

  bth(val){

    this.childrenVal = val

  }

}

方法二、

this.$chlidren.×××可以直接获取子组件的值.还可以修改

3、祖孙之间的传递

方法一、

跟父传子一样,但是需要先传给父组件,再一级一级向下传 爷爷=》父亲=》子

方法二、

this.$parent.$parent一层一层获取

方法三、provide/inject(只能用于祖孙之间的传递)

祖组件:

provide(){

return {

msg:'哈哈'

}

}

子组件:

inject:['msg']

4、兄弟组件之间的传递

用一个bus来传递;创建一个bus.js的文件来接收和传递。

bus.js

import Vue from 'vue'

export default new Vue()

使用就是跟父子组件用自定义组件this.$emit('change',()=>{})和this.$on('change',()=>{})一样就是将bus转换为bus就可以了。

还有一种传递使用vuex来传递(这里不细讲)

2、父组件如何直接修改子组件的值?

this.$chlidren.×××可以直接修改子组件的值.

3、子组件如何直接修改父组件的值

通过this.$parent.xxx可以直接获取并修改父组件的值

4、如何找到父组件与根组件?

通过this.$parent找到父组件。

通过this.$root直接找到根组件。

需要注意的是根组件的父组件是它本身

5、slot插槽?

首先slot插槽分为匿名(默认)插槽、具名插槽、作用域插槽三大类

匿名插槽:

默认插槽是最基本的插槽形式,当父组件在使用子组件标签时,在标签内部写入的内容,会被渲染到子组件中 <slot> 标签所在的位置

具名插槽:

具名插槽允许在子组件中定义多个插槽,并通过 name 属性为每个插槽指定名称,这样父组件就可以明确地将内容插入到对应的插槽中。

作用域插槽:

作用域插槽允许子组件向父组件传递数据,使父组件在使用插槽内容时可以基于子组件提供的数据进行渲染。


网站公告

今日签到

点亮在社区的每一天
去签到