vue 父子组件交互

2018-01-21  本文已影响141人  咕嘟咕嘟li

要点:
1.父组件定义值传递过去
2.子组件prpos接收使用,watch监测props内值的变化
3.修改后使用$emit反馈给父组件

举个栗子🌰(父组件控制子组件的显示/隐藏):

// 定义父组件
<template>
  <div class="stu-parent">
    <div class="stu-parent-wrap">this is parent</div>
    <button @click="clickButton()">click parent</button>
    <div class="stu-child-wrap">
      <stu-child-demo :showChild="childBol" @myClick="hideChild"></stu-child-demo>
    </div>
  </div>
</template>
<script>
  import StuChildDemo from '@/components/demo/StuChildDemo'
  export default {
    data () {
      return {
        // 定义该变量传递给子组件
        childBol: false
      }
    },
    components: {StuChildDemo},
    methods: {
      clickButton () {
        this.childBol = true;
      },

      // 接收子组件反馈过来的数据,并使用
      hideChild (val) {
        this.childBol = val;
      }
    }
  };
</script>

// 定义子组件
<template>
  <div class="stu-child" style="margin-top:100px;" v-if="visible">
    I'm the child!
    <button @click="myClick()">click me</button>
  </div>
</template>
<script>
  export default {
    props: {
      // 接受父组件传入的值
      showChild: false
    },
    data () {
      return {
        visible: this.showChild
      }
    },
    methods: {
      myClick () {
        this.visible = false;

        // 子组件传递值给父组件
        this.$emit('myClick', this.visible);
      }
    },
    watch: {
      // 监测父组件传入的值
      showChild (val) {
        this.visible = val;
      }
    }
  };
</script>

上一篇下一篇

猜你喜欢

热点阅读