Vue2.0开发之——组件数据共享-父向子传值(38)

一 概述

  • 组件之间的关系
  • 父向子传值
  • 子向父传值

二 组件之间的关系

2.1 组件之间的关系

在项目开发中,组件之间的最常见的关系分为如下两种

  • 父子关系
  • 兄弟关系

2.2 父子组件之间的数据共享

父子组件之间的数据共享又分为:

  • 父 -> 子共享数据
  • 子 -> 父共享数据

三 父向子传值

3.1 父向子传值过程

父组件App.vue
export default {
  data() {
    return {
      message: 'hello 132 的宝们!',
      userinfo: { name: 'wsc', age: 18 },
    }
  },
}
子控件Left.vue
export default {
  props: ['msg', 'user'],
}
子控件Left.vue注册父控件App.vue

导入

import Left from '@/components/Left.vue'

注册

export default {
  components: {
    Left,
    Right
  }
}

使用

<div class="box">
     <!-- 渲染 Left 组件和 Right 组件 -->
     <Left :msg="message" :user="userinfo"></Left>
</div>
效果图

3.2 不要修改props的值

Left.vue中值修改
<template>
  <div class="left-container">
    <h3>Left 组件</h3>
    <p>msg 的值是:{{ msg }}</p>
    <p>user 的值是:{{ user }}</p>
    <button @click="msg = 'abc'">修改 msg</button>
    <button @click="user.name = 'zs'">修改 user</button>
    <hr />
  </div>
</template>
App.vue中内容
<template>
  <div class="app-container">
    <p>{{ userinfo }}</p>
    <hr />
    <div class="box">
      <Left :msg="message" :user="userinfo"></Left>
    </div>
  </div>
</template>
效果图

四 子向父传值

3.1 子组件Right.vue

布局文件

<template>
  <div class="right-container">
    <h3>Right 组件 --- {{ count }}</h3>
    <button @click="add">+1</button>
  </div>
</template>

逻辑文件

export default {
  data() {
    return {
      // 子组件自己的数据,将来希望把 count 值传给父组件
      count: 0,
    }
  },
  methods: {
    add() {
      // 让子组件的 count 值自增 +1
      this.count += 1
      // 把自增的结果,传给父组件
      this.$emit('numchange', this.count)
    }
  }
}

3.2 父组件App.vue

布局文件

<div class="box">
      <Right @numchange="getNewCount"></Right>
</div>

逻辑处理

export default {
  data() {
    return {
      // 定义 countFromSon 来接收子组件传递过来的数据
      countFromSon: 0
    }
  },
  methods: {
    // 获取子组件传递过来的数据
    getNewCount(val) {
      console.log('numchange 事件被触发了!', val)
      this.countFromSon = val
    }
  },
  components: {
    Left,
    Right
  }
}

3.3 效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值