Vue的核心三大基础概念为:属性、时间和插槽。本文就这三个方面进行深入解析,来了解vue。

一、属性

1.自定义属性props

props 可以显示定义一个或一个以上的数据,对于接收的数据,可以是各种数据类型,同样也可以传递一个函数。

2.inheritAttrs

这是2.4.0 新增的一个API,默认情况下父作用域的不被认作 props 的特性绑定将会“回退”且作为普通的 HTML 特性应用在子组件的根元素上。可通过设置 inheritAttrs 为 false,这些默认行为将会被去掉。注意:这个选项不影响 class 和 style 绑定。

  1. data与props区别

※相同点:
data和props的选项里面都可以存放各种类型的数据,当行为操作改变时,所有行为操作所用到和模板所渲染的数据同时都会发生同步变化。
※不同点:
data 被称之为动态数据,可以任意改变它的数据类型和数据结构,不会受到任何环境的影响。
props 被称之为静态数据,在各自实例中,一旦在初始化被定义好类型时,基于 Vue 是单向数据流,在数据传递时始终不能改变它的数据类型,而且不允许在子组件中直接操作 传递过来的props数据,而是需要通过别的手段,改变传递源中的数据。

4.单向数据流

修改传递过来的props方法
☆方法1:过渡到data选项中==>在data选项里面通过currentType接收props中type数据,相当于一个赋值,不仅拿到了currentType的数据,而且可以改变currentType数据。

☆方法二:利用计算属性

以上两种方法虽可以在子组件间接修改props的值,但是却不能使子组件修改数据并且同步更新到父组件。所以需要对一个 prop 进行『双向绑定』。
☆方法三:使用.sync
但是.sync也是有限制的,比如:
1)不能和表达式一起使用(如 v-bind:title.sync="doc.title + ‘!’“是无效的);
2)不能用在字面量对象上(如 v-bind.sync=”{ title: doc.title }"是无法正常工作的)。
☆ 方法4:将父组件中的数据包装成对象传递给子组件
在 JavaScript 中对象和数组是通过引用传入的,所以对于一个数组或对象类型的 prop 来说,在子组件中改变这个对象或数组本身将会影响到父组件的状态。

5.向子组件中传递数据时加和不加 v-bind的区别用法:

在没有 v-bind 的模式下只能传递一个字面量,这个字面量只限于 String 类量,字符串类型。那如果想通过字面量进行数据传递时,如果想传递非String类型,必须props名前要加上v-bind,内部通过实例寻找,如果实例方没有此属性和方法,则默认为对应的数据类型。

二、事件

1.事件驱动与数据驱动
用原生JavaScript事件驱动通常是这样的流程:

※先通过特定的选择器查找到需要操作的节点 -> 给节点添加相应的事件监听
※然后用户执行某事件(点击,输入,后退等等) -> 调用 JavaScript 来修改节点
这种事件驱动的方式效率很低,所以一般我们采用数据驱动。
        Vue的一个核心思想是数据驱动。所谓数据驱动,是指视图是由数据驱动生成的,我们对视图的修改,不会直接操作 DOM,而是通过修改数据,其流程如下:

用户执行某个操作 -> 反馈到 VM 处理(可以导致 Model 变动) -> VM 层改变,通过绑定关系直接更新页面对应位置的数据
可以简单地理解为:数据驱动不是操作节点的,而是通过虚拟的抽象数据层来直接更新页面。
2.修饰符事件
☆表单修饰符

  • .lazy:在默认情况下, v-model 在每次 input 事件触发后将输入框的值与数据进行同步 。可以通过添加 lazy 修饰符,从而转变为使用 change事件进行同步。适用于输入完所有内容后,光标离开才更新视图的场景。

  • .trim:自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符。

  • .number:自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符(如果你先输入数字,那它就会限制你输入的只能是数字。如果你先输入字符串,那它就相当于没有加.number)
    ☆事件修饰符

  • 阻止单击事件继续传播 :

  • 提交事件不再重载页面:

  • 修饰符可以串联 :

三、插槽

插槽分为普通插槽和作用域插槽,两者很相似,区别仅在于作用域插槽可以接受子组件传递过来的参数。
v-slot新语法:
在 2.6.0 中,为具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令)。它取代了 slot 和 slot-scope 。

Vue组件三大核心概念相关推荐

  1. vue快速修改数组的某个值_详解vue组件三大核心概念

    前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛 ...

  2. vue warning如何去掉_详解 vue 组件三大核心概念

    前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛戳 ...

  3. vue传递数组对象_详解vue组件三大核心概念

    前言 本文主要介绍属性.事件和插槽这三个vue基础概念.使用方法及其容易被忽略的一些重要细节.如果你阅读别人写的组件,也可以从这三个部分展开,它们可以帮助你快速了解一个组件的所有功能. 本文的代码请猛 ...

  4. 【Vue五分钟】 五分钟了解Vue组件的核心概念

  5. Alibaba限流组件——Sentinel核心概念与流量控制

    目录 1 Sentinel介绍 1.1 Sentinel是什么 1.2 组成 1.3 关键概念 2 Sentinel流量控制案例 2.1 引入依赖 2.2 使用Sentinel提供的API实现流量控制 ...

  6. Vue三大核心概念之二(事件)

    1.普通事件 @click,@input,@change,@xxx等事件,经过this.$emit('xxx',-)触发 写法案例: <div id="example-3"& ...

  7. Vue三大核心概念之一(属性)

    1.自定义属性props:即组件中声明的属性,子类接受父类的值 2.原声属性attrs:没有声明的属性,默认自动挂在到组件根元素上,设置inheritAttrs为false能够关闭自动挂载 3.特殊属 ...

  8. docker 添加端口映射_Docker三大核心概念之容器

    ​容器 1.新建容器 docker create命令创建一个容器,例如: docker create -it hello-world 使用docker create命令新建的容器处于停止状态.可以使用 ...

  9. docker三大核心概念

    1. docker镜像(image) 镜像是创建docker容器的基础,docker镜像类似于虚拟机镜像,可以将它理解为一个面向docker引擎的只读模块,包含文件系统. 创建镜像有两种方法: (1) ...

最新文章

  1. 基于Pytorch再次解析AlexNet现代卷积神经网络
  2. NeurIPS 2021 | 华为诺亚Oral论文:基于频域的二值神经网络训练方法
  3. 深度学习 占用gpu内存 使用率为0_你了解GPU吗?为什么说深度学习需要GPU?
  4. 学校拥有计算机清单和所放位置说明,大学计算机基础期末考试指南(2011)
  5. 夯实数字化转型算能基石 构建洛阳银行核心云
  6. 高中计算机教师考试专业知识,高中教师资格证计算机专业考试内容
  7. C/C++编程笔记:数据结构二叉树的查找(前序、中序、后序、层序遍历)
  8. 【Word2Vec】word2vec是如何得到词向量的?
  9. 图解 CSS (2): border - 边框
  10. nero10 序列号
  11. vue开发:前端项目模板
  12. 计算机硬件基础与计算机组装知识总结
  13. Ember学习(1):Ember核心概念
  14. 怎么注册购买163VIP邮箱
  15. SyntaxError: Non-UTF-8 code starting with ‘\xd5‘ in file
  16. Ubuntu安装GIMP
  17. mysql 锁(三)
  18. 佛祖保佑永无Bug—— 最好用的注释插件
  19. Java面试之多线程:Java创建多线程为什么只有一种方式?
  20. 数据杂谈:CIO和CTO的区别(首席信息官首席技术官)

热门文章

  1. 苹果手机双指、三指等多种手势,升级iOS13,有了这么多新操作?
  2. 三级嵌入式准备(四)
  3. ios高版本app成功砸壳之kali使用frida-ios-dump砸壳
  4. mysql 5.7.19主从复制_MySQL 5.7.18的安装及主从复制(主从同步)
  5. GoAccess自定义log_format日志格式详解及使用
  6. linux C 可变参数配合vsnprintf的使用
  7. Virtual Box虚拟机安装win7
  8. TikTok带货如何选品?资深玩家带你了解
  9. C语言实现Linux系统的守护进程创建
  10. GPS星数及有效数确认