美文网首页
vue 组件传参几种方式

vue 组件传参几种方式

作者: zhao_madman | 来源:发表于2023-03-16 14:37 被阅读0次

vue组件的五种传值方法(父子\兄弟\跨组件)

一、props/$emit父子组件传值

父传子 (自定义属性 props)
//  父组件代码
<Son :name="31231"/>
// 子组件代码
<div>{{ name }}</div>
props: {
    name: {
      type: String,
      default: "hahahaha",
    },
}
子传父(自定义this.$emit)
// 子组件代码
<button @click="handleClick">子组件按钮</button>
  methods: {
    handleClick() {
      this.$emit("handleClick", "下班快跑,吃饭要饱");
    },
  },
// 父组件代码
<Son  @handleClick="handleClick" />
  methods: {
    handleClick(value) {
      this.text = value;
    },
  },

二、ref与parent/children父子组件传值

父传子
// 父组件
<button @click="handlebtn1">父按钮</button>
<Son ref="sonRef" />
 methods: {
    handlebtn1() {
      // 可以拿到子组件所有的信息
      console.log(this.$refs.sonRef)
      this.$refs.sonRef.handlebtn("父信息");
    },
},
// 子组件
<div>我是子组件---{{ name }}</div>
 methods: {
    handlebtn(value) {
      console.log(value);
      this.name = value;
    },
},
子传父(如果子组件是公共组件,需判断父组件是否具有该方法)
// 父组件
handlebtn1(value) {
    this.text = value;
},
// 子组件
<button @click="handlebtn">子组件按钮</button>
 handlebtn() {
       // this.$parent  拿到父组件所有的信息 跟ref类似
      this.$parent.handlebtn1("母猪快跑");
},

三、兄弟之间传参

兄弟组件之间的数据传递,通过eventBus来做中间的桥梁,传输方通过中间组件调用 emit 传数据,接收方通过on 接受数据,两者之间的自定义属性名保持一致。(vue3 已经移除这种方式)
// vue2
// 传输方组件调用方式
import Bus from '@/EventBus.js'
Bus.$emit('pass-value', this.say);

// 接收方接受参数
import Bus from '@/EventBus.js'

created() {
  Bus.$on('pass-value', val => {
     this.sibilingValue = val;
  })
}

// vue3  (使用第三方库mitt)
import mitt from 'mitt'
app.config.globalProperties.$mitt = mitt();
// 发送消息
import {getCurrentInstance} from 'vue';
const { appContext } = getCurrentInstance()
appContext.config.globalProperties.$mitt.emit('moneyEvent', ’31231‘);
// 接受消息
import {getCurrentInstance} from 'vue';
appContext.config.globalProperties.$mitt.on('moneyEvent', (res) => {
        amount.value = res;
})

四 attrs/$listeners隔代组件传值(爷孙组件参数互传) (vue3 不支持此方法)

爷传孙($attrs)
// 爷爷
<Dad :msg="'我是爷爷'" />
// 父亲
<Son v-bind="$attrs" />
// 孙子
<div>我是孙子组件---{{ msg }}</div>
props: {
    msg: {
      type: String,
    },
},
孙传爷($listeners)
爷爷
<button @click="setVal">父按钮</button>
methods: {
    setVal(val) {
      console.log(val);
    },
}
爸爸
<Son v-on="$listeners"/>
孙子
<div @click="toVal">我是孙子组件</div>
methods: {
    toVal() {
      this.$emit("setVal", "孙子信息");
    },
},

五、通过Vuex数据共享

// 注册代码
const store = new Vue.Store({
  state:{
    count: 100
  },
  mutations: {
    addCount(state, val = 1) {
      state.count += val;
    },
    subCount(state, val = 1) {
      state.count -= val;
    }
  }
})

// 组件调用
this.$store.commit('addCount');  // 加 1
this.$store.commit('subCount');  // 减 1

六.依赖注入provide/Inject(子组件都可以拿到)

父组件
  provide: {
    sonmsg: "哈哈哈哈哈哈",
  },

下级组件
<div @click="toVal">我是孙子组件{{ sonmsg }}</div>

inject: ["sonmsg"]

相关文章

  • 几种vue的组件传值方式

    几种vue的组件传值方式 1、路由传参 ①定义路由时加上参数props: true,在定义路由路径时要留有参数占位...

  • react路由跳转传参方式

    react在路由跳转进行传参有以下几种方式:1. params方式传参app.js 子组件OnRefs.js 组件...

  • SSM单体架构项目 (下)

    Vue 组件 组件导入 组件传参 props 组件传参,父组件向子组件传参 分页 引入分页组件

  • vue组件通信

    vue的组件传参的方式父子组件传参1.prop和emit是子传父,子组件监听一个事件,父组件调用并接受子组件传递过...

  • Vue-Router

    1. 路由配置 默认路由跳转 在 new Router时可用的配置参数: 2.路由传参 Vue路由传参的几种方式 ...

  • vue父子组件传参(异步请求数据)

    vue父子组件传参采用props方式 异步请求数据采用watch监听数据的更改

  • vue 中几种传值方法

    前言 vue项目中,组件跟组件之间数据的传递是很普遍的行为,在这里总结几种常见的vue组件跟组件之间传值方式,其中...

  • vue 6种通信总结①

    常用vue通信大概有这几种方式进行: 组件间的父子之间的传值 组件间的子父之间的传值 非组件间的组件间的传值(简称...

  • 06.父子组件 (VUE全栈开发学习笔记)

    以下,节选自08.Vue传值方式 3.父子组件传参 使用场景:父子组件间 3.1. 父传子 子组件定义属性: 父组...

  • vue中的组件间通信

    vue中组件通信方法有很多种,可以根据具体场景来选择具体使用哪种。比较常见的以下几种方法: 1、父组件向子组件传参...

网友评论

      本文标题:vue 组件传参几种方式

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