ref的使用方法 ,组件通信父传子,组件通信子传父,组件分离模块化, v-model 传值的3种方式

news2024/11/17 12:31:56

原生获取一个节点:document.getElementById('') 

vue方式操作dom节点:ref

  • 通过给元素设定ref属性在vue实例中获取这个元素:  

<input type="text" ref="input" placeholder="请输入内容">

  • 组件挂载后(mounted)才能访问模板引用:

this.$refs.input.focus()

expose 选项可以用于限制对子组件实例的访问,不想被访问的就不放进来,会做为私有的不会被访问到。

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>操作dom节点</title>
    <script src="../lib/vue.global.js"></script>

</head>

<body>
    <div id="app"></div>

    <script>
        const { createApp } = Vue

        const RootApp = {
            data() {
                return {
                    title: '自动获取焦点',
                }
            },
            mounted () {
                this.$refs.input.focus()
            },
            /*html*/
            template: `<div>
                        <h2>{{title}}</h2>
                        <input type="text" ref="input" placeholder="请输入内容">
                    </div>`
        }
        createApp(RootApp).mount('#app')

    </script>
</body>

</html>

组件通讯:最核心的功能之一就是组件(Component),从组件的构建、注册到组件间通讯

组件的 props:props 是组件的自定义属性,用于接收外部传给组件的数据
在封装通用组件的时候,合理地使用props 可以极大的提高组件的复用性

父传子:

props 是只读的:

1.vue 规定:组件中封装的自定义属性是只读的,程序员不能直接修改 props 的值。否则会直接报错;

2.要想修改 props 的值,可以把 props 的值转存到 data 中,因为 data 中的数据都是可读可写的

这里有两个注意点:

props里面的message和user和根组件中的message和user是一个东西,要写得一样

 父组件传过来的值不能直接修改,因为v-model的原因,一旦修改了父亲原来的值也会修改,所以传入过来的值是只读的。但是如果我们要修改,需要进行一个赋值,把原来传入的值赋予data中。

 

props可以写成数组的形式,也可以写成对象的形式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>组件通讯</title>
    <script src="../day1/lib/vue.global.js"></script>
</head>

<body>
    <div id="app"></div>

    <script>
        const { createApp } = Vue

        // 子组件
        /*
           组件 data选项中定义的数据为组件内部数据
           props: 定义外部传子组件中的数据
        */
        const ComA = {
            props: ['message', 'user'],
            data() {
                return {
                    title: 'props选项',
                    count: 0,
                    content: this.message
                }
            },
            created() {
                // 将外部数据赋值给内部状态content
                // this.content = this.message
            },
            methods: {
                bindConfirm() {
                    this.count++
                    console.log('this.message ', this.message);
                    // this.message = '新内容'
                    this.content = '新内容'
                }
            },

            /*html*/
            template: `<div style="width:200px;height:200px;background-color:pink;">
                            <h2>{{title}}</h2>
                            <p>外部数据: {{ message }}</p>
                            <p>外部数据: {{ user.name }} - {{ user.age}}</p>
                            <p>内部数据: {{ count }}</p>
                            <button @click="bindConfirm">确定</button>
                            <p>content: {{content}}</p>
                      </div>`
        }

        const RootApp = {
            components: {
                ComA
            },
            data() {
                return {
                    title: '组件通讯',
                    msg: '父组件内容',
                    user: {
                        name: 'jack',
                        age: 20
                    }
                }
            },
            methods: {},
            /*html*/
            template: `<div style="width:400px;height:400px;background-color:skyblue;">
                            <h2>{{title}}</h2>
                            <com-a :message="msg" :user="user"></com-a>
                        </div>`
        }
        // 1. data 和 methods 初始化
        // 2. 模板渲染 -> html标签
        // 3. 挂载显示
        createApp(RootApp).mount('#app')

    </script>
</body>

</html>

在以上案例中,使用组件分享模块化可以使代码看起来简洁。

在index里面:

在src文件里面放模块:app.js

在ComA文件中放该文件内容进行暴露即可。 

 


子传父 :

 1. 在子组件上绑定一个自定义事件@some-event
 2. vm.$emit('some-event') //触发名为some-event的事件

父子组件互传综合使用: 


兄弟传值:(不常用)


 v-model 使用

 v-model 方法二:使用computed计算属性来获取或者设置一个新值

 

 改变v-model 的参数:


穿透:

穿透attribute指传递给一个组件,没有被该组件声明为props或emits的attribute或者v-on事件监听器,常见的有class,style,id。

透传只会透传到根元素上。

如果根组件上有样式了,又透传下来一个样式,会将两个样式进行一个合并。注意,如果透传的样式设置和本身相冲,则会显示本身的。例如透传一个红色的字体,本身自己有个绿色的字体,会显示绿色的字体。

V-on监听器继承,同样也是可以进行透传的。

禁用 Attributes 继承:inheritAttrs:false

 

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

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

相关文章

【重要】有三AI技术专栏作者邀请,5大权益助力共同成长

知识分享平台众多&#xff0c;我们有三AI公众号是其中一个&#xff0c;在过去的3年里&#xff0c;我们已经写了700多篇&#xff0c;超过200万字的技术文&#xff0c;其中一些专栏作者的贡献功不可没。我们公众号只做原创内容&#xff0c;因为我并不希望平台成为一个靠复制转载内…

通过运维编排实现自动化智能运维与故障自愈

自动化帮助用户消除重复性任务&#xff0c;从而降低运营成本、提高效率并提高团队生产力。但是&#xff0c;将自动化引入复杂的 IT 环境还需要编排。编排是指一次性自动执行多项任务&#xff0c;涉及到计算机系统、中间件和服务的自动布置、协调和管理&#xff0c;利用自动执行…

10个最频繁使用的聚类算法 Python 实现(附完整代码)

大家好&#xff0c;聚类或聚类分析是无监督学习问题。它通常被用作数据分析技术&#xff0c;用于发现数据中的有趣模式&#xff0c;例如基于其行为的客户群。 有许多聚类算法可供选择&#xff0c;对于所有情况&#xff0c;没有单一的最佳聚类算法。相反&#xff0c;最好探索一…

46. 批量规范化

训练深层神经网络是十分困难的&#xff0c;特别是在较短的时间内使他们收敛更加棘手。 本节将介绍批量规范化&#xff08;batch normalization&#xff09;,这是一种流行且有效的技术&#xff0c;可持续加速深层网络的收敛速度。 再结合在 将介绍的残差块&#xff0c;批量规范…

盘点 | 基于小程序语法的跨端开发平台

最近&#xff0c;微信于2022年12月18日悄悄的推出了一款名叫“Donut”的开发平台。根据开发文档的产品介绍来看&#xff0c;该平台的核心是多端框架&#xff0c;支持使用小程序进行代码编写&#xff0c;并进行多端编译&#xff0c;从而实现多端开发。 目前Donut开发平台已经开…

Android 音视频入门/进阶教程

后续的音视频文章&#xff0c;都会在这里更新 作为安卓开发仔&#xff0c;对音视频这块&#xff0c;一直是比较感兴趣的&#xff0c;所以&#xff0c;本着学习和记录的态度&#xff0c;我也把我所学的知识记录起来&#xff0c;希望对想音视频感兴趣的小伙伴有所帮忙。 一. 基础…

SpringBoot maven 项目 JDBC 连接多源数据库

此方法支持 mysql&#xff0c;oracle&#xff0c;postgre&#xff0c;sqlserver等等 基本逻辑&#xff1a;1. 加载驱动; 2. 通过DriverManager传入数据库地址&#xff0c;用户名&#xff0c;密码&#xff0c;获取本地数据库连接 1. pom文件下添加依赖 <dependency><…

Android 多线程下载以及断点续传

多线程下载 在日常开发中&#xff0c;我们不可避免的会接到类似这样的需求&#xff0c;下载一个比较大的素材文件或者安装包文件&#xff0c;以此实现APP的自动更新&#xff0c;APP内的素材替换等。由于一般此类文件都比较大&#xff0c;一般会在50M以上&#xff0c;如果我们不…

高效好用的开发工具箱——猿如意

目录 前言&#xff1a; 1.我常用的功能介绍 2.主要功能chatGPT测评 3.我的使用体验和改进建议 前言&#xff1a; 猿如意是一款帮助开发的效率工具&#xff0c;集成了许多有用的工具和文档教程。帮助开发者提升开发效率&#xff0c;帮你从“问题”找到“答案”。尤其是12月…

加注超融合 星辰天合推出 XHERE V2 系列

近日&#xff0c;北京星辰天合科技股份有限公司&#xff08;简称&#xff1a;“XSKY星辰天合”&#xff09;成功举办了主题为“能存会算&#xff0c;创新不断”的 XHERE 超融合新品渠道推介会&#xff0c;正式向市场推出 XHERE V2 超融合软件平台。通过继续加大对超融合产品线的…

上云节省 35%计算资源,420 个运维人天:运满满实时计算实践和思考

摘要&#xff1a;本文整理自满帮实时数据团队 TL 欧锐&#xff0c;在 FFA 2022 行业案例专场的分享。本篇内容主要分为四个部分&#xff1a;满帮业务及平台架构介绍实时数据实时产品未来计划Tips&#xff1a;点击「阅读原文」查看原文视频&演讲 ppt01满帮业务及平台架构介绍…

数据可视化系列-01大数据可视化基础

文章目录1.概述2.大数据可视化基础2.1 数据可视化基础知识1、数据可视化简史&#xff1a;2、数据可视化是什么&#xff1a;3、数据可视化的分类&#xff1a;4、数据可视化流程&#xff1a;5、数据可视化的意义&#xff1a;2.2 认识BI和数据可视化工具1、BI的简介&#xff1a;BI…

RabbitMQ:订阅模型-匹配模式

阅模型-匹配模式&#xff0c;相比于前两种订阅模型&#xff0c;是更细致的分组&#xff0c;允许 在RoutingKey 中使用匹配符 *&#xff1a;匹配一个单词#&#xff1a;匹配0个或多个单词 RabbitMQ 订阅模型-匹配&#xff08;topics&#xff09;模式主要有以下六个角色构成&#…

FFmpeg功能命令汇总

前言 如此强大的FFmpeg&#xff0c;能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流、更改音视频参数功能等。通过终端命令如何实现这些功能&#xff0c;Richy在本文做一记录&#xff0c;以备之后查阅。 注意&#xff1a;下面一一列举…

AI4DB-Cardinality Estimation

一个学期已经结束了&#xff0c;通过这篇文章总结一下自己在CE方面所学习的内容。 由于大数据技术的飞速发展&#xff0c;使数据库在查询方面面临很大的挑战。原来数据量不大的时候&#xff0c;查询可以在很快的时间内得到结果&#xff0c;但是现在动辄就是上万上千万甚至上亿的…

数据结构之红黑树的生成、添加以及删除详解(附代码)

一&#xff0c;红黑树的来历 红黑树&#xff0c;首先是一个二叉树&#xff0c;对于二叉树&#xff0c;人们为了提升它的搜索效率&#xff0c;降低时间复杂度&#xff0c;创造出了二叉搜索树&#xff0c;把时间复杂度降低为对数级&#xff08;LOGn)&#xff0c;但是会出现一些极…

zookeeper之基本使用及实现分布式锁

写在前面 本文一起看下zk的基本用法。 安装 。 1&#xff1a;数据结构 采用类似于linux系统的文件系统存储结构&#xff0c;但不同于Linux系统文件&#xff0c;zk每个节点都可以存储数据&#xff0c;结构如下图&#xff1a; 节点类型分为如下四种&#xff1a; PERSISTENT&…

RK3568平台开发系列讲解(设备驱动篇)中断下文之tasklet的使用

🚀返回专栏总目录 文章目录 一、tasklet 的概念二、tasklet 参考步骤沉淀、分享、成长,让自己和他人都能有所收获!😄 📢我们一般将中断分为上下两个部分,分为上半部,下半部。上半部完成有严格时限的工作(必须),例如回复硬件等,这些工作都是在禁止其他中断情况下进…

汽车相关概念记录

目录 一、汽车电路相关概念 1.1、两个电源 1.2、单线制 1.3、低压直流供电 1.4、常电与ACC 1.4.1、大众ACC供电开关 1.4.2、奥迪ACC开关 二、电子电路 2.1、三极管 2.1.2、截止状态 2.1.3、放大区 2.1.4、饱和区 2.1.4、实例分析 一、汽车电路相关概念 1.1、两个电…

CIO40— 2022 行平常心,做自由人 (3年之约已满)

今天的天空依然很蓝。认识还是在那个不戴口罩的夏天。 感谢IT行业给了我们帮助。 IT将交流植根于微信群&#xff0c;微信群既是信息的集散地&#xff0c;也是良好实践的方案池。在工作中碰到的问题&#xff0c;只要在IT微信群中求助&#xff0c;大家都是知无不言&#xff0c…