属性

  • 自定义属性props ->组件的propos中声明的属性
  • 原生属性attrs ->没有声明属性,默认自动挂载在组件的根元素上,inheritAttrs可以关闭自动挂载
  • 特殊属性class、style ->挂载到组件根元素上,支持字符串、对象、数组等多种用法

子组件为何不可以修改父组件传递的propos?

如果修改了,Vue是如何监控到属性的修改并给出警告的?

按个人的理解的话:由于单向数据流,属性只能通过父组件传递到自组件,但是不能反过来,至于Vue监控属性的修改给出警告的话,应该回到我们的生命周期,在事件发生改变之后呢,Vue重新修改,更新DOM节点,发现属性值修改之后更新原有的DOM节点,但是在编译、渲染的时候发现不对了,然后就开始报错。

事件

  • 普通事件 ->@click、@input、@change等事件,通过this.$emit('',...)触发
  • 修饰符事件 ->@input.trim,@click.stop,@sumbmit.prevent等,一般用于原生的HTML元素,自定义组件需要自行开发支持

this.$emit的返回值?

感觉有个博客写的不错

https://www.cnblogs.com/padding1015/p/7878741.html

插槽

就是子组件提供给父组件使用的一个占位符,父组件中可以添加任何代码、数据放置在子组件的slot标签中

  • 匿名插槽:没有name属性,所以叫做匿名插槽
<tag1>插槽里面的东西</tag1>  //将要写的内容写在标签内
var tag1mes = {
template:`<dl>
//在slot中可以添加属性值,也就是作为其默认值,在其后添加标签,可以修改原有的默认标签属性值
<dt><slot></slot></dt> //添加一个slot标签,定于的就是一个插槽
<dd>插槽插入内容之后的一段文字</dd>
</dl>`
}
  • 具名插槽

    比如说,替换的东西很多啊,在渲染数据的时候,我需要的东西很多,但是总不可能全部都用匿名的吧,到时候都乱套了

    所以呢?这时候用上具名插槽就很有必要了
<tag1 :fatherdata="fatherdata">
<template slot="tit">我的标题</template>
<template slot="mes">我的内容</template>
</tag1> template:` <dl>
<dt><slot name="tit">默认标题</slot></dt>
<dd><slot name="mes">默认的内容</slot></dd>
</dl>`

通过slot的name属性,将slot与template对应起来

但是在2.6+的版本中,没有了slot方法,使用了v-slot,使用的时候必须放在template中使用

注:

  1. 父组件要添加子组件时,没有对应的插槽名,不会被填充进去
  2. 子组件有多个默认插槽,父组件的内容全都会插进去(具名的作用)

都是通过父组件传递给子组件内容,然后子组件根据传递过来的内容来执行相应的行为

Vue的属性、事件、插槽的更多相关文章

  1. Vue 实例之事件 操作样式 (文本、事件、属性、表单、条件)指令

    Vue 可以独立完成前后端分离式web项目的JavaScript框架 三大主流框架之一: Angular React Vue 先进的前端设计模式:MVVM 可以完全脱离服务器端,以前端代码复用的方式渲 ...

  2. vue组件之事件

    自定义事件 通过prop属性,父组件可以向子组件传递数据,而子组件的自定义事件就是用来将内部的数据报告给父组件的. <div id="app3"> <my-com ...

  3. React对比Vue(03 事件的对比,传递参数对比,事件对象,ref获取DOM节点,表单事件,键盘事件,约束非约束组件等)

    import React from 'react'; class Baby extends React.Component { constructor (props) { super(props) t ...

  4. Vue基础-自定义事件的表单输入组件、自定义组件的 v-model

    Vue 测试版本:Vue.js v2.5.13 学习 Vue 的自定义事件的表单输入组件,觉得文档讲的不太细致,所以这里再细化一下: 如果不用 v-model,代码应该是这样: <myinput ...

  5. vue 计算属性 实例选项 生命周期

    vue 计算属性: computed:{} 写在new vue()的属性,只要参与运算,数据不发生变化时,次计算只会执行一次,结果缓存,之后的计算会直接从缓存里去结果.如果其中的值发生变化(不管几个) ...

  6. 第二章 Vue快速入门--9 使用v-on指令定义Vue中的事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  7. Vue_(基础)Vue中的事件

    Vue.js中文文档 传送门 Vue@事件绑定 v-show:通过切换元素的display CSS属性实现显示隐藏: v-if:根据表达式的真假实现显示隐藏,如果隐藏,它绑定的元素都会销毁,显示的时候 ...

  8. js里的发布订阅模式及vue里的事件订阅实现

    发布订阅模式(观察者模式) 发布订阅模式的定义:它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. 发布订阅模式在JS中最常见的就是DOM的事件绑定与触发 ...

  9. vue for 绑定事件

    vue for 绑定事件 <div id="pro_list" v-for="item in pro_list"> <div class=&q ...

随机推荐

  1. Butterfly侧边栏引入一言

    此教程涉及修改源码 背景 在修改每页显示7篇文章后,出现了这种情况. 这是完美主义(强迫症)的我所不能忍受的,有什么可以占据这里的呢?{% btn 'https://hitokoto.cn/',一言, ...

  2. AdblockPlus自定义屏蔽广告

    AdblockPlus自定义屏蔽广告我推荐使用两种方法: 1. 使用CSS选择器 2. 使用样式选择器 屏蔽广告中,重要的一个问题就是识别广告. 我们要自己编写屏蔽就得将广告选出来,告诉Adblock ...

  3. 【SDOI2009】 HH的项链 - 莫队

    题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...

  4. [PyTorch 学习笔记] 1.2 Tensor(张量)介绍

    本章代码: https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.py https: ...

  5. 图神经网络 PyTorch Geometric 入门教程

    简介 Graph Neural Networks 简称 GNN,称为图神经网络,是深度学习中近年来一个比较受关注的领域.近年来 GNN 在学术界受到的关注越来越多,与之相关的论文数量呈上升趋势,GNN ...

  6. DataGrid样式

    1.自定义列(DataGridTemplateColumn) <DataGridTemplateColumn Width="130"> <DataGridTemp ...

  7. 极简 Node.js 入门 - 3.3 文件写入

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  8. Jenkins(1)—— 部署安装

    最近有聊到接口自动化,持续集成这方面,所以想从持续集成工具Jenkins作为切入点来学习一下 一.jenkins概念 Jenkins是一个开源的.可扩展的持续集成.交付.部署(软件/代码的编译.打包. ...

  9. 月历输出php代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 手把手教Linux驱动3-之字符设备架构详解,有这篇就够了

    一.Linux设备分类 Linux系统为了管理方便,将设备分成三种基本类型: 字符设备 块设备 网络设备 字符设备: 字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程 ...