Vue组件之间的通信

news2024/11/17 9:35:35

1、组件:是vue的重要的特征之一,可以扩展html的功能,也可以封装代码实现重复使用

2、组件的创建

(1)非脚手架方式创建:

1️⃣使用vue.extend创建组件

2️⃣使用vue.component注册组件

3️⃣在html页面使用组件

<div id="app">
	<!-- 使用组件 :名称之间用'-'连接-->
	<my-com></my-com>   
</div>
<script>
        // 1、使用Vue.extend创建组件
        var mycom = Vue.extend({
            template:'<h2>啦啦啦</h2>'  //template:指定页面中需要展示的html结构
        })
        // 2、使用Vue.component注册组件
        Vue.component('myCom',mycom)  //'myCom'是注册的组件名,在注册时采用驼峰命名
        new Vue({
            el:'#app'
        })
</script>

(2)使用template创建组件

1️⃣使用template创建html页面模板,并给template定义id属性

2️⃣使用template的id属性值进行注册

<div id="app">
        <com3 />
</div>
<template id="tmp">
        <div>
            <h2>今天周一</h2>
            <select name="" id="">
                <option value="#">请选择</option>
                <option value="周二">周二</option>
                <option value="周三">周三</option>
                <option value="周四">周四</option>
                <option value="周五">周五</option>
                <option value="周六">周六</option>
                <option value="周天">周天</option>
            </select>
        </div>
</template>
<script>
        Vue.component('com3',{
            template:'#tmp',
        })
        new Vue({
            el:'#app'
        })
</script>

注:在Vue实例外部通过Vue.component创建或注册的组件称为全局组件

        局部组件:创建方式和全局组件的创建方式一样,注册时必须放在Vue实例内部通过components进行注册

<div id="app">
        <com3 />
</div>
<template id="tmp">
        <div>
            <h2>今天周一</h2>
            <select name="" id="">
                <option value="#">请选择</option>
                <option value="周二">周二</option>
                <option value="周三">周三</option>
                <option value="周四">周四</option>
                <option value="周五">周五</option>
                <option value="周六">周六</option>
                <option value="周天">周天</option>
            </select>
        </div>
</template>
<script>
        new Vue({
            el:'#app',
             components:{
                com3:{
                    template:'#tmp'
                }
            }
        })
</script>

(2)在WebStorm中使用脚手架创建组件:

1️⃣创建Vue component,组件命名采用驼峰命名

    <template> 
        //必须有1个html的标签作为模板的根标签
    </template>

 3、组件中的data:

(1)每个组件都有自己的数据:即每个组件都有自己的data

(2)vue实例的data和组件中的data的区别

        1️⃣vue实例的data是一个对象

        2️⃣组件的data必须是一个方法,该方法必须返回一个对象

<template>
  <div id="dt">
    <h2>哈哈哈</h2>
    <p>{{ info }}</p>
  </div>
</template>

<script>
export default {
  name: "UserComponent",
  data(){
    return {
      info:'西安邮电大学'
    }
  }
}
</script>

<style scoped>
  #dt{
    text-align: center;
    color: mediumpurple;
  }
</style>

        3️⃣vue实例中的data和组件中data在使用方法上是一样的

4、组件中的methods:和vue实例中的methods用法相同

5、Vue组件之间的通信

(1)Vue组件之间的关系:

        1️⃣父子关系:A组件和B组件、B组件和C组件、B组件和D组件

        2️⃣兄弟关系:C组件和D组件

        3️⃣隔代关系:A组件和C组件、A组件和D组件

(2)父组件向子组件传递数据: 通过props方式向子组件传递数据(在子组件中添加props属性)

        父组件:App.vue

        子组件:SmallSon.vue

        App.vue ——>users数组 ——> SmallSon.vue

SmallSon.vue:

<template>
  <div>
    <p>子组件:{{ userName }}</p>
    <ul>
      <li v-for="(item,index) in users" :key="index">
        {{ item }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  name: "SmallSon",
  props:{
    users:{ //users是从父组件中接收的数据
        type:Array,  //数据类型,Array表示数组
        required:true  //表示必须的
    },
    userName:{
      type:String,
    }
  }
}
</script>

<style scoped>
  ul{
    margin: 0 auto;
  }
  li{
    list-style: none;
    width: 100px;
    border: 1px solid #000000;
  }
</style>

App.vue:

<template>
  <label for="">
        父组件:<input type="text" v-model="fatherName" />
  </label>
  <SmallSon :users="list" :userName="fatherName"/>
</template>
<script>
import SmallSon from "@/components/SmallSon";
export default {
  name: 'App',
  components: {
    SmallSon
  },
  data(){
    return {
      list:['西交大','西工大','西电'],
      fatherName:''
    }
  }
}
</script>

(3)子组件向父组件传值(通过事件形式)

 SmallSon:

<template>
  <div>
    <h2>{{ sonInfo }}</h2>
    <button @click="sendInfo">发送</button>
  </div>
</template>

<script>
export default {
  name: "SmallSon",
  data(){
    return {
      sonInfo:'清华大学'
    }
  },
  methods:{
    sendInfo(){
      // 第一个参数是触发的事件名,第二个参数子组件发送给父组件的数据
      this.$emit('changeInfo',this.sonInfo);
    }
  }
}
</script>

App.vue:

<template>
  <div id="app">
    <h2>父组件接收子组件的信息:{{ title }}</h2>
    <SmallSon @changeInfo="updateTitle"/>
  </div>
</template>

<script>
import SmallSon from "@/components/SmallSon";
export default {
  name: 'App',
  components: {
    SmallSon
  },
  methods:{
    updateTitle(e){
      // 参数e:接收的是子组件传递过来的数据
      this.title = e;
    }
  }
}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个平凡打工人在 CSDN 的 2022 与 2023

平凡又不平凡的一年 2022 年是不平凡的一年&#xff0c;这一年经历了疫情的起起伏伏&#xff0c;随着身边好多同学的毕业离开&#xff0c;手头的工作也愈发的繁重&#xff0c;2022 年也顺理成章的成为了工作3年来最忙碌的一年&#xff0c;但却也是博客产出与自己收获最多的一年…

大数据hadoop和spark怎么选择?

Hadoop框架的主要模块包括如下&#xff1a; Hadoop Common Hadoop分布式文件系统(HDFS) Hadoop YARN Hadoop MapReduce 虽然上述四个模块构成了Hadoop的核心&#xff0c;不过还有其他几个模块。这些模块包括&#xff1a;Ambari、Avro、Cassandra、Hive、 Pig、Oozie、Flume…

spring之静态代理

文章目录前言一、代理模式中的三大角色二、静态代理引入1.业务接口2.目标对象总结前言 在Java程序中代理模式的作用&#xff1a; 当一个对象需要收到保护的时候可以考虑使用代理对象去完成某个行为需要给某个对象的功能进行功能增强的时候&#xff0c;可以考虑找一个代理进行…

Java内存模型(JMM)详解!

文章目录什么是JMM?现代计算机内存模型缓存一致性JMM内存模型与计算机内存模型的关系线程间通信JMM三大问题原子性可见性有序性什么是JMM? JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。 JMM可以理解为是一个规范&#xff0c;一个抽象概念&#xff0c;并不真实…

Java 单元测试

目录 一、Junit 1.1、单元测试初始化与清理资源 1.2、捕获异常 1.3、条件测试 1.4、标记失效测试方法 1.5、参数化测试 单元测试&#xff1a;是对最小功能单元编写的测试代码。 示例&#xff0c;当开发好一个 Java 阶乘的方法。 n&#xff01; 1 x 2 x 3 x ..…

CRM软件哪个好?该如何选择?

CRM软件哪个好&#xff1f;该如何选择&#xff1f; CRM是集营销、销售、服务为一体的围绕客户全生命周期管理的系统&#xff0c;在各行各业的数字化转型大潮中&#xff0c;作为以消费者、终端用户、客户为主导的企业经营管理核心系统&#xff0c;CRM选型的难度和复杂度也在不断…

关于ETL的两种架构(ETL架构和ELT架构)

ETL&#xff0c;是英文 Extract-Transform-Load 的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;extract&#xff09;、转换&#xff08;transform&#xff09;、加载&#xff08;load&#xff09;至目的端的过程。ETL一词较常用在数据仓库&#xff0c;但其对象…

Java的JVM垃圾回收机制GC概述

JVM——GC机制1、什么是GC&#xff1f;2、GC算法的总体概述3、JVM所处的位置4、JVM整体结构5、JVM架构模型6、Java垃圾回收机制优缺点7、GC主要关注的区域垃圾回收算法&#xff1a;标记阶段&#xff0c;引用计数循环引用标记阶段&#xff1a;可达性分析算法GC root可以是哪些&a…

JavaScript代码题--以及一些奇奇怪怪的发现

解析 let a{b:10,c:{d:[11,12],e:13}}&#xff0c;实现 10111213 效果 解 const a{b:10,c:{d:[11,12],e:13}}function sum(obj) {let total 0;const value Object.values(obj)value.forEach(item>{total typeof item number ? item : sum(item)})return total }const …

Java家教系统家教网站家教兼职系统

简介&#xff1a; 用户可以注册成为学员也可以是教员。教员发布家教信息&#xff0c;学员根据自己的要求查找符合自己的教员。学员预约教员的某一天去家教&#xff0c;教员可以在个人中心里查看&#xff0c;是否接受该预约。在教员接受或拒绝之前&#xff0c;学员随时可以取消…

数据库,计算机网络、操作系统刷题笔记23

数据库&#xff0c;计算机网络、操作系统刷题笔记23 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…

基于 Vue 制作一个猜拳小游戏

目录前言&#xff1a;项目效果展示&#xff1a;对应素材&#xff1a;代码实现思路&#xff1a;实现代码&#xff1a;总结&#xff1a;前言&#xff1a; 在工作学习之余玩一会游戏既能带来快乐&#xff0c;还能缓解生活压力&#xff0c;跟随此文一起制作一个小游戏吧。 描述&…

【2042. 检查句子中的数字是否递增】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 句子是由若干 token 组成的一个列表&#xff0c;token 间用 单个 空格分隔&#xff0c;句子没有前导或尾随空格。每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 &#xff0c;要么是一个…

ORA-00600 kcratr_nab_less_than_odr 问题处理

问题&#xff1a;ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [196495], [39399], [39460], [], [], [], [], [], [], []导致原因&#xff1a;可能是由于服务器宕机&#xff0c;控制文件的缺失&#xff0c;或者在线日志文件在实例恢复时不完整1、数据库未…

5G边缘计算网关助力5G工业物联网智能化建设

5G边缘计算&#xff0c;凭借高带宽、高可靠、低时延、移动性等特性&#xff0c;推动工业生产物联网发展趋势&#xff0c;实现工业更快、更精准通信及数据共享。边缘计算网关下5G工业物联网远程感知生产一线&#xff0c;工控数字化、自动化、智能化&#xff0c;降低人物力资源成…

LeetCode 2042. 检查句子中的数字是否递增

【LetMeFly】2042.检查句子中的数字是否递增 力扣题目链接&#xff1a;https://leetcode.cn/problems/check-if-numbers-are-ascending-in-a-sentence/ 句子是由若干 token 组成的一个列表&#xff0c;token 间用 单个 空格分隔&#xff0c;句子没有前导或尾随空格。每个 tok…

【计算机体系结构】指令集并行(ILP)动态调度算法:Tomasulo实现代码(Tomasulo Algorithm Implementation)

Tomasulo Algorithm Implementation &#xff08;本文章仅提供算法实现过程&#xff0c;具体算法思想请查阅教科书&#xff09; 如果觉得这篇文章有用&#xff0c;请记得点个赞并收藏哦&#xff01; 1.Introduction Tomasulo算法用于指令的动态调度&#xff0c;允许乱序执行…

C C++内存对齐以及特殊类的大小

目录C语言内存对齐现象内存对齐规则为什么存在内存对齐如果struct or class中存在成员函数时的大小空类大小为1Cclass存在虚函数时的大小C语言 内存对齐现象 C语言中结构体的大小往往不是结构体中各种数据类型的加和&#xff0c;因为存在内存对齐; struct S {double d;//8字…

Linux常用系统日志

文章目录一 常用系统日志二 系统日志优先级三 其他日志文件一 常用系统日志 日志文件用途/var/log/messages记录大多数系统日志信息&#xff0c;包括启动、IO错误、网络和程序等问题/var/log/secure记录安全和身份验证等相关消息和错误/var/logrsyslog将所有日志文件写入到该目…

Nacos 漏洞利用

Nacos 漏洞利用 1.漏洞描述&#xff1a; Alibaba Nacos是阿里巴巴推出来的一个新开源项目&#xff0c;是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。致力于帮助发现、配置和管理微服务。Nacos提供了一组简单易用的特性集&#xff0c;可以快速实现动态…