Vue基础之组件

什么是组件?

组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展

使用组件:

全局注册:要注册一个全局组件,你可以使用 Vue.component(tagName, options)

这里写图片描述

局部注册:不必在全局注册每个组件。通过使用组件实例选项注册,可以使组件仅在另一个实例/组件的作用域中可用

这里写图片描述

data 必须是函数:

使用组件时,大多数选项可以被传入到 Vue 构造器中,有一个例外: data 必须是函数。 实际上,如果你这么做
这里写图片描述
那么 Vue 会在控制台发出警告,告诉你在组件中 data 必须是一个函数。最好理解这种规则的存在意义
这里写图片描述
由于这三个组件共享了同一个 data , 因此增加一个 counter 会影响所有组件!我们可以通过为每个组件返回新的 data 对象来解决这个问题
这里写图片描述

构成组件:

props:在子组件中通过props属性注册(比如注册一个仅仅包含一个值的数组),当在父组件中使用子组件的时候,可以在子组件的标签中添加一个属性,属性名就是通过props注册的数组中的那个唯一的值,然后给这个属性所添加的属性值就可以在子组件代码中通过’this.props数组中的值’的格式获取到从父组件中传递过来的值

这里写图片描述
在父组件中给子组件的props属性message传递的值,可以在子组件中被接收到,并展现在template模板中

camelCase vs. kebab-case:HTML 特性不区分大小写。当使用非字符串模版时,prop的名字形式会从 camelCase 转为 kebab-case(短横线隔开)

这里写图片描述

动态 Props:类似于用 v-bind 绑定 HTML 特性到一个表达式,也可以用 v-bind 动态绑定 props 的值到父组件的数据中。每当父组件的数据变化时,该变化也会传导给子组件

这里写图片描述

自定义事件:我们知道,父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,应该怎样做?那就是自定义事件

使用 v-on 绑定自定义事件:

每个 Vue 实例都实现了事件接口(Events interface),即:

  • 使用 $on(eventName) 监听事件

  • 使用 $emit(eventName) 触发事件

在组件树中通信,当在子组件中触发某个特定的自定义事件的时候,通过自定义事件接口将该事件和某些信息传递给父组件,从而在父组件中触发对应的自定义事件来展示从子组件中传递过来的信息(需要注意的是'$on''$emit'可以直接在父组件的标签中用’v-on:事件名称’来监听)
这里写图片描述

使用自定义事件的表单输入控件:

自定义事件也可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定

这里写图片描述
仅仅是一个语法糖
这里写图片描述
当用户触发input事件,输入新的value值的时候,动态的修改value属性的值

(未完)

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

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

相关文章

sql 保留小数

select ROUND(12.555, 2) --12.560 select cast(12.5550 as decimal(10,2)) --12.56 转载于:https://www.cnblogs.com/kedarui/p/3791337.html

React开发(105):没有定义变量报错

const { pageIndex, pageSize, selectTabVal, sortModel } this.state;

常用的前端JavaScript方法封装(49种)

1、输入一个值,返回其数据类型 function type(para) { return Object.prototype.toString.call(para) } 2、数组去重 function unique1(arr) { return […new Set(arr)] } function unique2(arr) { var obj {}; return arr.filter(ele > { if (!obj[ele]) { ob…

发一个flash+PHP的简单上传代码

示例文件1。Flash8:uploader.as--------------------------------------------------------------------------------import flash.net.FileReference; //调用上传控件,这个是必须的,要传文件就要用这个控件var frT…

Oracle SQL Loader数据导入

1、SQL LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。 它使用的命令为:在NT下&a…

反射获取类的几种方法

1 public class Demo {2 3 /**4 * 反射:加载类,获得类的字节码5 * param args6 * throws ClassNotFoundException 7 */8 public static void main(String[] args) throws ClassNotFoundException {9 10 //…

Webpack基础之四个核心介绍

入口(Entry): webpack 将创建所有应用程序的依赖关系图表(dependency graph)。图表的起点被称之为入口起点(entry point)。入口起点告诉 webpack 从哪里开始,并遵循着依赖关系图表知道要打包什么。可以将您应用程序的入口起点认为是根上下文(contextual…

React开发(106):方法定义 不然弹出框报错

hideSureModal () > {this.setState({sortModel: false,});};

为什么防火墙透传不过去VLAN11?

今天遇到一个问题请大家帮分析一下!2950上有两个VLAN需要通过防火墙透传VLAN1和VLAN11现在的问题是:VLAN11不能通过防火墙透传!vlan1可以透传过去.转载于:https://blog.51cto.com/liuzhu/59913

有关Java 锁原理

锁 锁是用来锁东西的,让别人打不开也看不到!在线程中,用这个“锁”隐喻来说明一个线程在“操作”一个目标(如一个变量)的时候,如果变量是被锁住的,那么其他线程就对这个目标既“操作”不了&…

不能以根用户身份运行 Google Chrome 浏览器

在fedora12中安装了chrome浏览器,但是一运行出现以下提示: 不能以根用户身份运行 Google Chrome 浏览器。请以普通用户身份启动“Google Chrome 浏览器”。要以根用户身份运行,您必须为个人资料信息的存储指定其他的“--user-data-dir”。 …

Taro+react开发(24)--this.state和this.props

由于 this.props 和 this.state 都用于描述组件的特性, 可能会产生混淆。一个简单的区分方法是,this.props表示那些一旦定义,就不再改变的特性,而 this.state 是会随着用户互动而产生变化的特性。

Webpack基础之入口起点

入口起点(Entry Points) 单个入口&#xff08;简写&#xff09;语法&#xff1a; 用法&#xff1a;entry: string|Array<string> entry 属性的单个入口语法&#xff0c;是下面的简写 当你向 entry 传入一个数组时会发生什么&#xff1f;向 entry 属性传入「文件路…

Tailwind CSS 是一个工具集 CSS 框架

Tailwind CSS 是一个工具集 CSS 框架&#xff0c; 助你快速实现定制化的网站设计。 Tailwind CSS 是一个高度可定制的基础层 CSS 框架&#xff0c;它为您提供了构建定制化设计所需的所有构建块&#xff0c;而无需重新覆盖任何内建于框架中的设计风格。 官网&#xff1a;https:/…

explorer.exe被删除了怎么办?

系统的dllcache里面还有的哦 按ctrlaltdel调出任务管理器,新建一个任务 cmd /k copy c:\windows\system32\dllcache\explorer.exe c:\windows 然后再次运行一个命令: explorer 搞定

js的动态加载、缓存、更新以及复用(四)

本来想一气呵成&#xff0c;把加载的过程都写了&#xff0c;但是卡着呢&#xff0c;所以只好在分成两份了。 1、页面里使用<script>来加载 boot.js 。 2、然后在boot.js里面动态加载 bootLoad.js。以时间作为标识 var dateVer date.getYear() _ date.getMonth() _ d…

React开发(106):getFieldDecorator不能包裹太多div

<Row gutter{12}><Col span{12}><Form.Item label"推送规则用户列表" required>{getFieldDecorator(userRule, {initialValue: popupByIdDetail.userRule,})(<Radio.Group onChange{this.handleOpenCategoryType}>{cmsUseRule.map((item) &g…

linux 文件中搜索字符串命令 grep

用‘grep’搜索文本文件 如果您要在几个文本文件中查找一字符串&#xff0c;可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件&#xff1a;$ grep magic /usr/src/linux/Documentation/…

贝尔曲线测试网站

https://cubic-bezier.com/#.07,.68,.21,.98 手捏贝尔参数