美文网首页
【VUE】父子组件传值

【VUE】父子组件传值

作者: Q小予o0 | 来源:发表于2021-06-21 10:47 被阅读0次

【父对子】

父组件监听子组件值和方法v-on、$emit

// 父组件
    <List  v-on:onShowShare="onShowShare"/>
  data() {
    return {
       showShare: false
    };
  }
 methods: {
    onShowShare(v) {
        this.showShare = v
        console.log('onShowShare',v);
    }
}

子组件

  data() {
    return {
       list: []
    };
  }
 methods: {
    getList() {
       const share = this.list.length > 0 
        this.$emit('onShowShare',share)
    }
}

父组件调用子组件方法,更新子组件

  • 利用$refs 获取子组件方法
  • watch动态监听props更新
  • 子组件
<script>
  export default {
    name: "child",
    props: "someprops",
    watch: {
      hotWord(newV) {
      // console.log('hotWord-newV',newV,old);
    }
   },
    methods: {
      parentHandleclick(e) {
        console.log(e)
      }
    }
  }
</script>
  • 父组件
<template>
  <div>
    <button @click="clickParent">点击</button>
    <child ref="mychild" :hotWord="value"></child>
  </div>
</template>
 
<script>
  import Child from './child';
  export default {
    name: "parent",
    components: {child: Child },
    data() {
     return {
         value: ''
      }
    },
    methods: {
      clickParent() {
        this.$refs.mychild.parentHandleclick(this.value);
      }
    }
  }
</script>

【子对父】

子组件.sync 修饰符动态更新父组件

.sync 修饰符,只是作为一个编译时的语法糖存在。它会被扩展为一个自动更新父组件属性的 v-on 监听器。
vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。如果我们不用.sync,我们想做上面的那个弹窗功能,我们也可以props传初始值,然后事件监听,实现起来也不算复杂。

作者:littleTank
链接:https://www.jianshu.com/p/6b062af8cf01

示例:

<comp :foo.sync="bar"></comp>

扩展成:

<comp :foo="bar" @update:foo="val => bar = val"></comp>

当子组件需要更新 foo 的值时,它需要显式地触发一个更新事件:

this.$emit('update:foo', newValue)

具体示例demo

<template>
  <div class="details">
      <myComponent :show.sync='valueChild' style="padding: 30px 20px 30px 5px;border:1px solid #ddd;margin-bottom: 10px;"></myComponent>
      <button @click="changeValue">toggle</button>
  </div>
</template>
<script>
import Vue from 'vue'
Vue.component('myComponent', {
    template: `<div v-if="show">
                  <p>默认初始值是{{show}},所以是显示的</p>
                  <button @click.stop="closeDiv">关闭</button>
               </div>`,
    props:['show'],
    methods: {
      closeDiv() {
        this.$emit('update:show', false); //触发 input 事件,并传入新值
      }
    }
})
export default{
  data(){
      return{
          valueChild:true,
      }
  },
  methods:{
      changeValue(){
          this.valueChild = !this.valueChild
      }
  }
}
</script>

相关文章

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

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

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

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

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

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

  • 组件通信

    vue传值可分为父子之间传值、兄弟组件之间传值、跨代组件之间传值 1.父子之间传值:可以使用$emit/props...

  • Vue组件之间的传值

    Vue父子组件之间的传值(props)兄弟组件 VUEX

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

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

  • 2019-03-13

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

  • 2019-03-13

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

  • vue2.0的三种常用传值方式,并且如何实现?

    vue2.0 组件传值方式有三种:父组件向子组件传值,子组件向父组件传值,非父子组件传值 : 父传子: 首先现在父...

  • VUE03

    Vue组件 组件的创建 组件的指令以及事件绑定 父子组件创建 父子组件通信 兄弟组件的传值 动态组件

网友评论

      本文标题:【VUE】父子组件传值

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