美文网首页
vue中组件传值

vue中组件传值

作者: guoss | 来源:发表于2019-08-12 20:43 被阅读0次

1.父组件向子组件传值(假设子组件是child)
父组件中首先引入子组件,通过在components中注册子组件

<template>
  <div>
    父组件:
    <input type="text" v-model="name">
    <br>
    <br>
    <!-- 引入子组件 -->
    <child :name="name"></child>
  </div>
</template>
<script>
   export default {
    data () {
        return {
          name: ''
        }
     },
      components: {
        child
      }
    }
</script>

在子组件中

<template>
  <div>
    子组件:
    <span>{{name}}</span>
  </div>
</template>
<script>
  export default  {
    // 接受父组件的值
    props: ['name']
  }
</script>

props的形式

props:  {
  name: {
    required: false,
    default: false,
    type: String 
  }
}
或者是下面的都是可以的
 props: ['name']

2.子组件向父组件传值

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

在父组件中

<template>
  <div>
    父组件:
    <span>{{name}}</span>
    <!-- 引入子组件 定义监听子组件变化的函数-->
    <child @childFunction="childFunction"></child>
  </div>
</template>
<script>
  import child from './child'
  export default {
    components: {
      child
    },
    data () {
      return {
        name: ''
      }
    },
    methods: {
      childFunction: function (childValue) {
        // childValue就是子组件传过来的值
        this.name = childValue
      }
    }
  }
</script>

3.非父子组件的传值
主要通过公共的vue实例进行传值
新建bus.js

import Vue from 'vue'
export default new Vue()

在组件A中

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

在B组件中

<template>
  <div>
    B组件:
    <input type="button" value="点击触发" @click="getData">
    <span>{{name}}</span>
  </div>
</template>
<script>
  import Bus from './bus.js'
  export default {
    data () {
      return {
        name: 0
      }
    },
    mounted: function () {
      var vm = this
      // 用$on事件来监听dataChange事件的变化
      Bus.$on('dataChange', (data) => {
        console.log(data)
        vm.name = data
      })
    },
    methods: {
      getData () {
        console.log(this.name)
      }
    }
  }
</script>

相关文章

  • (VUE3) 四、组件传值(父子组件传值 & 祖孙组件传值 &v

    1.父子组件传值 vue2中的父子组件传值:父组件: 子组件: vue3中的父子组件传值: 还是用props接收父...

  • vue中父子组件传值

    vue中父子组件传值是经常使用的场景 父组件向子组件中传值 父组件 子组件 父组件向子组件中传值分三步1、在父组件...

  • Vue组件传值

    vue组件传值 一、父组件向子组件传值方式: 1. 子组件中定义props,父组件向子组件props进行传值。 2...

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

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

  • Vue - 传值

    Vue 传值有两种:1)父组件向子组件传值(属性传值,Prop传值)2)子组件向父组件传值 一、父组件向子组件传值...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

  • 组件传值(父组件传值给子组件)

    组件传值(父组件传值给子组件)不可在子组件中修改父组件的值,可以通过深拷贝。在子组件中拷贝一份数据app.vue:...

  • 前端基础搬运工-VUE模块

    十、VUE模块 基础部分 1. Vue组件间传值 答: -[ ] 1.父子之间的传值 父组件向子组件传值通过p...

  • Vue父子组件通信和双向绑定

    本篇文章主要介绍父子组件传值,组件的数据双向绑定。 1. 基础父子组件传值 父子组件传值,这是Vue组件传值最常见...

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

网友评论

      本文标题:vue中组件传值

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