您的位置 首页 技术

vue传值方式有哪些

vue传值方式有:1、prop向下传递,事件向上传递;2、子组件通过$emit触发父组件的自定义事件;3、通过定义公共实例文件来进行非父子组件之间的传值。 本文操作环境:windo…

vue传值方式有:1、prop向下传递,事件向上传递;2、子组件通过$emit触发父组件的自定义事件;3、通过定义公共实例文件来进行非父子组件之间的传值。

本文操作环境:windows7系统、vue2.5.17版,DELL G3电脑。

vue传值方式有哪些?

Vue中常用的三种传值方式

父传子

父子组件的关系可以总结为prop向下传递,事件向上传递。父组件通过prop给子组件下发数据,子组件通过事件给父组件发送消息。

父组件:

<template>  <p>    父组件:    <input type="text" v-model="name">    <br>    <br>    <!-- 引入子组件 -->    <child :inputName="name"></child>  //child子组件通过 :inputName="name" 将值传过去  </p></template><script>  import child from './child'  export default {    components: {      child    },    data () {      return {        name: ''      }    }  }</script>

子组件:

<template>  <p>    子组件:    <span>{{inputName}}</span>  </p></template><script>  export default {    // 接受父组件的值    props: {      inputName: String,   //在这里对传过来的进行接收      required: true    }  }</script>

子传父

子组件可以通过$emit触发父组件的自定义事件。vm.$emit(event,arg) 用于触发当前实例上的事件;

子组件:

<template>  <p>    子组件:    <span>{{childValue}}</span>    <!-- 定义一个子组件传值的方法 -->    <input type="button" value="点击触发" @click="childClick">  </p></template><script>  export default {    data () {      return {        childValue: '我是子组件的数据'      }    },    methods: {      childClick () {        // childByValue是在父组件on监听的方法        // 第二个参数this.childValue是需要传的值        this.$emit('childByValue', this.childValue)        }    }  }</script>

父组件:

<template>  <p>    父组件:    <span>{{name}}</span>    <br>    <br>    <!-- 引入子组件 定义一个on的方法监听子组件的状态-->    <child v-on:childByValue="childByValue"></child>  </p></template><script>  import child from './child'  export default {    components: {      child    },    data () {      return {        name: ''      }    },    methods: {      childByValue: function (childValue) {        // childValue就是子组件传过来的值        this.name = childValue      }    }  }</script>

非父子组件传值

非父子组件之间传值,需要定义个公共的公共实例文件bus.js,作为中间仓库来传值,不然路由组件之间达不到传值的效果。

公共bus.js

//bus.jsimport Vue from 'vue'export default new Vue()

组件A:

<template>  <p>    A组件:    <span>{{elementValue}}</span>    <input type="button" value="点击触发" @click="elementByValue">  </p></template><script>  // 引入公共的bug,来做为中间传达的工具  import Bus from './bus.js'  export default {    data () {      return {        elementValue: 4      }    },    methods: {      elementByValue: function () {        Bus.$emit('val', this.elementValue)      }    }  }</script>

组件B:

<template>  <p>    B组件:    <input type="button" value="点击触发" @click="getData">    <span>{{name}}</span>  </p></template><script>  import Bus from './bus.js'  export default {    data () {      return {        name: 0      }    },    mounted: function () {      var vm = this      // 用$on事件来接收参数      Bus.$on('val', (data) => {        console.log(data)        vm.name = data      })    },    methods: {      getData: function () {        this.name++      }    }  }</script>

相关推荐:《vue.js教程》《最新的5个vue.js视频教程精选》

以上就是vue传值方式有哪些的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/95595.html

为您推荐

返回顶部