VUE组件与组件之间的传参

发布于:2025-06-25 ⋅ 阅读:(15) ⋅ 点赞:(0)

每次启动vue2项目的时候在 vue.config.js中配置:
 

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
   //关闭语法严格检验
  lintOnSave:false
  
})

1:在 src 下 创建 utils 文件夹 然后创建 BaseDao.js文件

import vue from "vue";
const BaseDao =new vue();
export default BaseDao;

2:创建School 与 Student 组件

<template>
   <div class="School">
    <p>{{ ming }}</p>
    <button @click="test1()">点击{{ ming }}给下方传参</button>
      <p>接收的姓名:{{ lpl.name }}</p>
      <p>接收的年龄:{{ lpl.age }}</p>
    
     
   </div>
</template>
<script>
// 引入新的vue实例对象

import BaseDao from "../utils/BaseDao";
export default {
   name: 'School',
   components: {
    BaseDao
     
   },
   mixins: [],
   props: {
     
   },
   data() {
     return {
        ming:'我是学校组件',
        dat:{
            name:'阿萨德',
            age:'26',
            
        },
        lpl:{}
       
     }
   },
   computed: {
     
   },
   watch: {
     
   },
   mounted() {
     
   },
   methods: {
    test1(){
        console.log(this.ming);
        // 左侧为给另一个组件传递的参数 ,右侧为当前实例对象
        BaseDao.$emit('data',this.dat)
        
        

    }
     
   },
      // 用于接受参数
   beforeCreate(){
            BaseDao.$on('lol',(data)=>{
               this.lpl=data


            })


   }
};
</script>
<style  scoped>
.School{
    background-color: aquamarine;
    width: 300px;
    height: 300px;


}
</style>

Student:
 

<template>
   <div class="Student">
      <p>{{ ming }}</p>
      <button @click="test02()">点我给上方传参</button>
      <p>接收的姓名:{{ asd.name }}</p>
      <p>接收的年龄:{{ asd.age }}</p>
     
   </div>
</template>
<script>
import BaseDao from "../utils/BaseDao";
export default {
   name: 'Student',
   components: {
      BaseDao
     
   },
   mixins: [],
   props: {
     
   },
   data() {
     return {
      ming:'我是学生组件',
      asd:{},
      lol:{
         name:'轻微',
         age:'33'
      }
       
     }
   },
   computed: {
     
   },
   watch: {
     
   },
   mounted() {
     
   },
   methods: {
      // 用于传递参数
      test02(){
         BaseDao.$emit('lol',this.lol)


      }
     
   },
   // 用于接受参数
   beforeCreate(){
            BaseDao.$on('data',(data)=>{
               this.asd=data


            })


   }
};
</script>
<style  scoped>
.Student{
    background-color: blueviolet;
    height: 300px;
    width: 300px;
}
</style>


 


网站公告

今日签到

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