父子组件传值

props

  1. // 父组件
  2. <div id="parent">
  3. <child :show="show"></child>
  4. </div>
  5. <script>
  6. // 定义全局组件
  7. Vue.component('child', {
  8. props: [show],
  9. template: `
  10. <div class="child">
  11. <span>{{show}}</span>
  12. </div>
  13. `
  14. })
  15. const app = new Vue({
  16. data: {
  17. show: false, // 子组件的状态
  18. },
  19. })
  20. </script>

子组件改父组件的值

事件传递

  1. // 父组件
  2. <div id="parent">
  3. <child :show="show" @change="show=$event"></child>
  4. </div>
  5. <script>
  6. // 定义全局组件
  7. Vue.component('child', {
  8. props: [show],
  9. template: `
  10. <div class="child" v-if="show">
  11. <span @click="$emit('change',false)">{{show}}</span>
  12. </div>
  13. `
  14. })
  15. const app = new Vue({
  16. data: {
  17. show: false, // 子组件的状态
  18. },
  19. })
  20. </script>

使用sync

  1. // 父组件
  2. <div id="parent">
  3. <child :show.sync="show"></child>
  4. </div>
  5. <script>
  6. // 定义全局组件
  7. Vue.component('child', {
  8. props: [show],
  9. template: `
  10. <div class="child" v-if="show">
  11. <span @click="$emit('update:show',false)">{{show}}</span>
  12. </div>
  13. `
  14. })
  15. const app = new Vue({
  16. data: {
  17. show: false, // 子组件的状态
  18. },
  19. })
  20. </script>

使用了sync的修饰符,父级就不需要写方法的传递,不需要写事件的处理