vue控制台消除两个小提示
1.安装vue开发者工具 即可消除
2.提示我们正在使用一个开发者的vue版本 开发者版本比较大(有报错提示功能) 在生成环境中最好替换为生产版本
添加 Vue.config.productionTip = false 即可消除
事件绑定@click传参问题
默认会传event事件参数 @click="showInfo"和@click="showInfo(event)"相等的
可以直接传参@click=“showInfo(66)” 同时也可以带上事件参数@click=“showInfo($event,66)”
v-bind 属性绑定
标签中属性加 v-bind: 进行属性动态绑定 age的值 是双引号里面运行的
表达式的值
而不是字符串不加 v-bind: age的值 是双引号里面的
字符串
上面age值的是 数值19
下面是 字符串 18+1
Vue中data函数两种写法
vue3中只支持函数式
由Vue管理的函数如果用箭头函数写 this指的不再是vue实例 而是window
箭头函数中this指代是window
事件修饰符
-
prevent
添加后点击
<a>
标签 不再跳转 只执行showInfo事件函数 -
stop
添加后点击
<button>
标签 不再触发两次showInfo事件 只执行里面的事件 -
once
添加后点击
<button>
标签 只触发一次 再点击无反应 -
capture
在div1中添加capture后 点击 标签 先执行div1的事件 再执行div2的事件
事件捕获 顺序:由外到内 div1 --> div2
事件冒泡 顺序:由内到外 div2 --> div1
嵌套的div执行顺序为:先事件捕获后事件冒泡
由于正常事件 在冒泡阶段触发 所以正常先执行div2 再div1 结果为 2 1
在div1中添加capture后 点击 标签 在捕获阶段中就执行div1的事件 再执行div2的事件 结果为1 2
键盘事件
在按下指定按键后才触发事件反应
自定义按键(vue3被禁止)
按下回车键才触发showInfo事件 keyup 按键抬起后触发
e.key 按键名称 enter control(ctrl)
e.keyCode 按键编码 13 17
插值语法调用函数
watch监事属性
监听属性(data中的 computed计算属性中的)发生变化时调用监听函数中的handler回调函数
1.可以添加参数 newValue oldValue 2.添加配置 immediate:ture 初始化时就调用
deep 开启深度监视:监视data属性中某一个属性的子属性是否变化
只监听某一个子属性用 ‘属性名.子属性名’ 方式
监听任意子属性变化用deep:true
-
简写方式
watch和computed区别
watch可以执行异步操作例如 延时1s执行某个函数 computed做不到 是同步的
v-if和v-show
v-if 切换频率低时使用 控制DOM是否有节点 false时不渲染
v-show 切换频率高时使用 控制DOM的style:"display:none"的值 任何情况必渲染
template 只能搭配v-if 使用 v-show不行
v-for遍历key值原理
v-for遍历时 看情况要添加唯一的key值 如不添加vue默认添加 ;key=“index”
key值为index时 在操作遍历列表数据时可能出现 界面错乱 遍历效率低情况 如果数据仅展示可不添加
key值应为唯一值 如id 身份证号 学号等
-
key值为index 页面有输入框 在数据最前面添加新数据时页面错乱 原理
-
key值为id 页面有输入框 在数据最前面添加新数据时页面正常 原理
Vue中修改或添加数组的某个元素
必须使用 push pop shift unshift splice sort reverse 方法
或者 Vue.set(对象,属性名,值 vm.$set(对象,属性名,值)
直接使用索引修改的话 Vue不会做响应式处理 (页面不会渲染)
js中数组操作
操作会影响原数组的:
push 末尾添加 splice 替换元素 splice(0,1,“喝酒”) (开始索引,替换元素个数,替换元素)
pop 末尾删除 sort 排序
shift 首位删除 reverse 翻转
unshift 首位添加
不会影响原数组(返回新数组):
filter 过滤
.filter 数组过滤: return 需要满足的条件 返回一个新的数组
indexOf: 是否包含指定字符串 不包含返回-1 包含返回所在索引值 空字符串返回 0
.unshift: 在数组最前面添加元素
.push: 在数组后面添加元素
Math.floor: 向下取整
Math.random(): 生成随机数 [0,1)
.sort: 数组排序 a.b 为数组中两个元素进行比较
a-b: 升序
b-a: 降序
给对象中添加属性(做响应式处理)
Vue对象中后添加的属性默认不做响应式处理 (添加数据后数据更新 页面不刷新)
使用: Vue.set(对象,属性名,值) this.$set(对象,属性名,值)
这样后添加的属性具有响应式(getter 和 setter)
给对象中修改属性
修改
对象的已有属性
可以直接修改 (先添加的属性Vue已经进行了响应式处理)
reduce数组统计函数
.reduce( (pre,current)=>{ } , )
可以用来统计数组中做了某事的数量 货币大于100的数量等
下面的用来统计 todos 数组中 done值为true的对象的数量
第一个参数 条件函数 第二个参数 统计初始值
(pre,current)=>{ } 这个函数调用的次数为数组的长度
pre 上一次调用的返回值
current 当前值 数组的当前元素值
v-model表单
radio 单选框的 一定要添加value值
checkbox 复选框的 添加value值 对应的属性为数组 (添加checked 默认选择项)
v-mode绑定的值不能是props传的值 因为props是不可以修改的
filters过滤器
使用时 通过管道符号 | 加过滤器名 即可调用(可以同时执行多个过滤器)
调用时会自动将time 值 传入(默认)
过滤器传参可以有两个参数 第一个默认为前面的time值 (调用时可以不写)
第二个为主动传值 如果调用时没有传第二个值 第二个值默认为str的值
过滤器会生成新的数据 不会改变原数据
要用新的对象接收
全局过滤器
定义一个名为 mySlice 的全局过滤器
循环定时器
setInterval(()=>{ 操作 },1000) 设置定时器 操作及时间间隔
clearInterval(定时器名) 销毁定时器
生命周期
非单文件组件(不是.vue结尾的文件)
使用Vue.extend({ })
创建组件
里面通过templatel来编写html结构 只能有一个根节点(用一个div包裹全部html)
数据部分用date函数式编写 data(){ } (防止数据连带)
可以简写 省略 Vue.extend({ }) (在Vue脚手架中)
在Vue实例中用components:{ }
注册组件
(局部注册)1.Vue实例中的组件名:引入组件名
2.直接使用相同组件名
Vue.component(‘实例中组件名’,引入组件名)
全局组件注册
全局组件可以在不同Vue实例中使用 (不用在不同Vue实例中再去分别注册)
直接用组件名做标签
使用组件
(局部组件,全局组件同理)
组件名设置
Vue实例中的组件名等于引用组件名 可以直接写
一个单词 首字母小写school
Vue开发者工具中显示为首字母大写
一个单词 首字母大写School
Vue开发者工具中显示为首字母大写
多个单词用 - 分隔 my-school 同时必须用 ‘’ 标记
多个单词 首字母全大写 必须在脚手架中才可用使用