Vue理解父子组件通信演示解析

Vue理解父子组件通信演示解析


前言

用实践更好的理解Vue中父子组件之间信息的传递


一、项目演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>父子组件通信演示</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
<!--思路:
父传子通信:
因为父模板中的数据子模板不能直接使用,所以需要将父模版中的数据用绑定传值的形式先传到子模版的数据中,将提供给子模版使用
子传父通信
如下例:首先需要将子模版中的按钮添加监听,并在子模版中定义一个发射自定义监听的方法,然后再使用模板时监听这个自定义方法,
当按钮被点击时,被发射的自定义方法被父模板监听到,这时会执行父模板中的方法-->

<div id="app">
<!--    用:categories="categories"将父模板中的数据与子模版中绑定-->
<!--    ③监听自定义方法-->
<cpn :categories="categories" :massage="massage" @itemclick="cpnclick"></cpn>
</div>


<template id="cpn">
    <div>
    <ul>
        <li v-for="item in categories">
<!--            ①监听按钮-->
            <button @click="btnclick(item)">{{item.name}}</button>
        </li>
    </ul>
        <h2>{{categories[massage].name}}</h2>
    </div>
</template>

<script>
const cpn = {
  template: '#cpn',
  // 用props用于接收父模板中传来的数据,并限制类型,这样在子模版中就可以动态使用模版本从服务器请求的动态数据
  props: {
    categories: Array,
    massage:Intl
  },
  // 在子模板中发射 自定义监听
  methods: {
    btnclick(item){
      // ②如果按钮被触发,则将自定义方法和参数发射出去
      this.$emit("itemclick",item)
    }
  }
}

    const app = new Vue({
      el: '#app',
      data: {
        categories: [
          {id:1,name:'热门推荐'},
          {id:2,name:'家用电器'},
          {id:3,name:'手机数码'},
          {id:4,name:'电脑办公'}
        ],
        massage: 0
      },
      methods: {
        // ④如果监听到自定义方法被执行,则获取到从子模版传过来的信息
        cpnclick(item){
          this.massage=item.id-1
        }
      },
      components: {
        cpn
      }
    })
</script>
</body>
</html>

二、结果演示


点击按钮显示不同内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值