vue 父子组件通信

简介: vue 父子组件通信

文章目录

大家好,我是夏小花

下面是关于vue中父子组件通信案例,首先是父组件向子组件传递数据,然后子组件向父组件进行传递数据,代码中有序号标注的步骤,以及我画的一张逻辑图,结合代码去理解通信原理以及父子通信流程。


上干货

代码比较长,注释可能会有些乱,注意看下具体步骤,看不明白的私信!!!

首先这边我是通过在vue官网直接下载vue.js,直接引入到代码中;

共分为7步,父组件传递子组件进行动态绑定input—>当子组件input发生改变时子组件发布事件—>父组件进行事件监听从而实现双向绑定

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<!-- 父组件模板 -->
<div id="app">
  <!-- 7.父组件监听子组件发射的事件,进行双向绑定
        双向绑定父组件和子组件进行相互通信:number1="num1"-->
  <cpn :number1="num1"
       :number2="num2"
       @num1change="num1change"
       @num2change="num2change"/>
</div>
<!-- 子组件模板 -->
<template id="cpn">
  <div>
    <!-- 显示父组件传来的值 -->
    <h2>props: {{number1}}</h2>
    <h2>data: {{dnumber1}}</h2>
    <!--<input type="text" v-model="dnumber1">-->
    <!-- :value 实现双向绑定
      @input当用户输入内容进行改变时,num1Input监听事件方法-->
    <input type="text" :value="dnumber1" @input="num1Input">
    <h2>props: {{number2}}</h2>
    <h2>data: {{dnumber2}}</h2>
    <!--<input type="text" v-model="dnumber2">-->
    <!--
        :value="dnumber2实现双向绑定
          @input当用户输入内容进行改变时,num2Input监听事件方法-->
    <input type="text" :value="dnumber2" @input="num2Input">
  </div>
</template>
<script src="../JS/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    // 1.Vue实例中定义两个属性: num1和num2
    data: {
      num1: 1,
      num2: 0
    },
    //实现事件方法
    methods:  {
      num1change(value){
        this.num1 = parseInt(value);
      },
      num2change(value){
        this.num2 = parseInt(value);
      }
  },
    //注册组件
    components: {
      cpn: {
        template: `#cpn`,
        // 2.子组件定义两个属性,接收父组件传来的值: num1和num2
        props: {
          number1: Number,
          number2: Number
        },
        // 3.将number1和number2赋值给dnumber1和dnumber2进行初始化,用来对input进行双向绑定
        data(){
          return {
            dnumber1: this.number1,
            dnumber2: this.number2
          }
        },
        // 4.定义methods,处理函数,处理num1Input事件
        methods: {
          num1Input(event){
            //当子组件文本框值改变时,父组件中的值也进行改变
            // 5.当input中的值发生改变时,将input的值赋值到dnumber1进行双向绑定
            this.dnumber1 = event.target.value;
            // 6.改变父组件值时(子组件向父组件传值),发布事件
            this.$emit('num1change',this.dnumber1);
            // 当input1中的值发生改变时,input2中的值(dnumber2)的倍数*100进行显示
            this.dnumber2 = this.dnumber1 * 100;
            //改变父组件值时(子组件向父组件传值),发布事件
            this.$emit('num2change',this.dnumber2)
          },
          //处理num2Input事件
          num2Input(event){
            //当父组件文本框值改变时,子组件中的值也进行改变
            //当input中的值发生改变时,将input的值赋值到dnumber2进行双向绑定
            this.dnumber2 = event.target.value;
            //改变父组件值时(子组件向父组件传值),发布事件
            this.$emit('num2change',this.dnumber2);
            // 当input2中的值发生改变时,input1中的值(dnumber2)的倍数/100进行显示
            this.dnumber1 = this.dnumber2 / 100;
            //3.同时修饰dnumber2的值
            this.$emit('num1change',this.dnumber1)
          }
        }
      }
    }
  })
</script>
</body>
</html>

运行截图

4edc953e2c684bbe819ffa954c899c08.png

流程图

4edc953e2c684bbe819ffa954c899c08.png

后期我会将vue组件化知识点,陆续分享到我的博客中。

目录
相关文章
|
25天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
22天前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
126 64
|
1天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
22天前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
28 8
|
22天前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
23 1
|
25天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
25天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
JavaScript
Vue父子组件传值(porvide+inject实现组件通信)
如果我们需要把父组件的值传递给子组件,而且子组件可能存在层层嵌套,那么就可以使用provide+inject的方法来实现组件之间的通信
193 0
Vue父子组件传值(porvide+inject实现组件通信)
|
JavaScript 前端开发
前端-vue基础63-非父子组件传值
前端-vue基础63-非父子组件传值
97 0
前端-vue基础63-非父子组件传值
下一篇
DataWorks