vue sleep_vue不常用的知识点的整理
作者:小城听风雨
https://blog.csdn.net/a5252145/article/details/107316953
v-cloak
使用 v-cloak 指令可以有效解决屏幕闪动。
有时候,页面没渲染之前就会出现vue代码块,例如下图。使用v-cloak可以很好解决这种问题。
<template> <div class="hello"> <span v-cloak>{{ content }}span> div>template><script>export default { name: "hello", data() { return { content: "测试" }; }};script><style scoped>/* v-cloak这个属性会在页面渲染前作用于对应dom 在渲染完毕这个里面的样式将被移除 */[v-cloak] { display: none;}style>
keep-alive
官网是这么解释的:
例如:可以实现页面缓存,比如从编辑页切出去再切进来,页面还是处于编辑状态。
需要在router.js中设置meta属性,meta下的keepAlive属性设置为true,代表这个页面需要进行缓存。
import Vue from 'vue'import Router from 'vue-router'import HelloWorld from '@/components/HelloWorld'import is from '@/view/is'import list from '@/view/list'import detail from '@/view/detail'Vue.use(Router)export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld, meta: { keepAlive: false, title: 'HelloWorld' } }, { path: '/is', name: 'is', component: is, meta: { keepAlive: false, title: 'is' } }, { path: '/list', name: 'list', component: list, meta: { keepAlive: true, title: 'list' } }, { path: '/detail', name: 'detail', component: detail, meta: { keepAlive: true, title: 'detail' } } ]})
在app.vue中修改一下代码
<template> <div id="app"> <keep-alive> <router-view v-if="$route.meta.keepAlive" /> keep-alive> <router-view v-if="!$route.meta.keepAlive" /> div>template><script>export default { name: "App"};script><style>#app { font-family: "Avenir", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;}style>
在详情页detail.vue中,注意beforeRouteEnter和beforeRouteLeave两个方法。
<template> <div> <Form ref="formCustom" :model="formItem" :label-width="80"> <FormItem label="Input"> <Input v-model="formItem.input" placeholder="Enter something...">Input> FormItem> <FormItem label="Select"> <Select v-model="formItem.select"> <Option value="beijing">New YorkOption> <Option value="shanghai">LondonOption> <Option value="shenzhen">SydneyOption> Select> FormItem> <FormItem label="DatePicker"> <Row> <Col span="11"> <DatePicker type="date" placeholder="Select date" v-model="formItem.date">DatePicker> Col> <Col span="2" style="text-align: center">-Col> <Col span="11"> <TimePicker type="time" placeholder="Select time" v-model="formItem.time">TimePicker> Col> Row> FormItem> <FormItem label="Radio"> <RadioGroup v-model="formItem.radio"> <Radio label="male">MaleRadio> <Radio label="female">FemaleRadio> RadioGroup> FormItem> <FormItem label="Checkbox"> <CheckboxGroup v-model="formItem.checkbox"> <Checkbox label="Eat">Checkbox> <Checkbox label="Sleep">Checkbox> <Checkbox label="Run">Checkbox> <Checkbox label="Movie">Checkbox> CheckboxGroup> FormItem> <FormItem label="Switch"> <i-switch v-model="formItem.switch" size="large"> <span slot="open">Onspan> <span slot="close">Offspan> i-switch> FormItem> <FormItem label="Slider"> <Slider v-model="formItem.slider" range>Slider> FormItem> <FormItem label="Text"> <Input v-model="formItem.textarea" type="textarea" :autosize="{minRows: 2,maxRows: 5}" placeholder="Enter something...">Input> FormItem> <FormItem> <Button type="primary">SubmitButton> <Button style="margin-left: 8px">CancelButton> FormItem> <FormItem> <router-link :to="{name:'list'}"> <Button size="small" type="primary">跳转到列表页Button> router-link> <router-link :to="{name:'is'}"> <Button size="small" type="primary">跳转到is页Button> router-link> FormItem> Form> div>template><script>export default { name: "detail", mixins: [], components: {}, filters: {}, props: [], computed: {}, data() { return { formItem: { input: "", select: "", radio: "male", checkbox: [], switch: true, date: "", time: "", slider: [20, 50], textarea: "" } }; }, watch: {}, created() { }, mounted() { }, methods: { // 重置表单 init() { this.$refs[formCustom].resetFields(); } }, // 路由进来之前,判断是从哪个页面过来的,设置不同的keepAlive属性 beforeRouteEnter(to, from, next) { if (from.name === "list") { to.meta.keepAlive = true; } else { to.meta.keepAlive = false; } next(); // beforeRouteEnter不能通过this访问组件实例,但是可以通过 vm 访问组件实例(刚开始错误写法) // next(vm => { // if (from.name === "list") { // // 在这里修改keepAlive值,是不能缓存数据的,因为在next()里面的代码,是在vue挂载之后执行,处于activated之后,此时activated中keepAlive还是false // vm.$route.meta.keepAlive = true; // } else { // vm.$route.meta.keepAlive = false; // } // }); }, // 路由离开之前,判断去往哪个页面,设置不同的keepAlive属性 beforeRouteLeave(to, from, next) { if (to.name === "list") { this.$route.meta.keepAlive = true; } else { this.$route.meta.keepAlive = false; } next(); }, activated() { // 此方法在页面缓存时会被调用(this.$route.meta.keepAlive为true时),根据路由元信息决定是否重新加载数据。不加载则是上次填写完的数据 // console.log(this.$route.meta.keepAlive); }};script><style scoped>.detail { position: relative; height: 100%; width: 100%;}style>
插槽slot
解构插槽 Prop:可以传递子组件的变量
// 子组件<template> <div class="isComponent"> <slot name='one' :childStr='childStr'>slot> <slot name='two'>slot> <slot>slot> div>template><script>export default { name: "isComponent", data() { return { childStr: 'i am a child', }; }};script><style scoped>style>
// 父组件<is-component> <template #one="{childStr}">{{childStr}}template> <template v-slot:two> two template> <template> default template>is-component>
效果:// i am a child two default
强制刷新某个div
通过this.$router.go(0)刷新页面,和F5一样,会有空白页时间,体验不好。通过provide/inject即可改变这种效果。
修饰符
事件修饰符:
.stop:相当于原生JS中event.stopPropagation(),阻止事件冒泡。
.prevent:相当于原生JS中event.preventDefault(),阻止默认事件的发生。
.capture:事件冒泡的方向相反,事件捕获由外到内。即有冒泡发生时,有该修饰符的dom元素会先执行,如果有多个,从外到内依次执行。
.self:只会触发自己范围内的事件,不包含子元素。
.once:事件只能触发一次。
.passive:事件会执行默认方法。
注:
每次事件产生,浏览器都会去查询一下是否有preventDefault阻止该次事件的默认动作。
我们加上passive就是为了告诉浏览器,不用查询了,我们没用preventDefault阻止默认动作。
passive和prevent冲突,不能同时绑定在一个监听器上
:is: 动态组件
优点:使代码更符合HTML语法验证
官网是这么解释的:
// 父组件:<template> <div class="is"> <table> <tr :is='is'>tr> table> div>template><script>import isComponent from '../components/isComponent'export default { name: "is", components: { isComponent }, data() { return { is: 'isComponent' }; }};script><style scoped>style>
// 子组件:<template> <div class="isComponent"> <span>我是trspan> div>template><script>export default { name: "isComponent", data() { return {}; }};script><style scoped>style>
@click.native
在封装好的组件上使用,要加上.native才能click。
router-link 加上@click事件,绑定的事件会无效因为:
router-link的作用是单纯的路由跳转,会阻止click事件,你可以试试只用click不用native,事件是不会触发的。
此时加上.native,才会触发事件.
根据Vue2.0官方文档关于父子组件通讯的原则,父组件通过prop传递数据给子组件,子组件触发事件给父组件。但父组件想在子组件上监听自己的click的话,需要加上native修饰符
// router-link "{name:'detail'}" "small" type=// 自己封装的组件<is-component @click.native="handleNative">is-component>
更多前端分享,请关注:
前端路人甲
vue sleep_vue不常用的知识点的整理相关推荐
- 【Vue系列】Vue3.0知识点汇总整理
目录 一.Vue3简介 1.Vue3带来了什么? 二.创建Vue3工程 1.使用vue-cli创建 2.使用vite创建 补充:分析Vue3的工程结构 三.常用Composition API 1.初识 ...
- matplotlib一些常用知识点的整理,
本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找. 强烈推荐ipython 无论你工作在什么项目上,IPython都是值得推荐的.利用ipython --pylab,可以进入Py ...
- 前端面试知识点目录整理
前端面试知识点目录整理 基本功考察 1.关于Html 1.html语义化标签的理解.结构化的理解:能否写出简洁的html结构:SEO优化. 2.h5中新增的属性,如自定义属性data.类名classN ...
- 关于js的一些常用小知识点(持续更新)
关于js的一些常用小知识点 1.获取页面中所有选中的CheckBox复选框的值 2.js获取网页URL中所带的参数 3.js模拟点击button 4.前端传入后台list,后台是不能接收List的,就 ...
- 机器学习需要掌握的数学知识点---详细整理
机器学习需要掌握的数学知识点---详细整理 第一篇 线性代数篇 第一章 排队!排队!什么是向量 第二章 矩阵 第三章 距离 第二篇 概率偏 由暗恋引发的思考 机器学习中的概率研究 贝叶斯问题 第三篇 ...
- 六年级上册计算机知识点总结,六年级数学上册知识点的整理
第1篇:六年级上册数学圆的知识点整理 一.认识圆 1.圆的定义:圆是由曲线围成的一种平面图形. 2.圆心:将一张圆形纸片对折两次,折痕相交于圆中心的一点,这一点叫做圆心. 一般用字母o表示.它到圆上任 ...
- 数据结构知识点总结整理
数据结构知识点总结整理 0.常考基础必知必会 A. 排序:排序有几种,各种排序的比较,哪些排序是稳定的,快排的算法: B. 查找:哈希查找.二叉树查找.折半查找的对比,哈希映射和哈希表的区别? C. ...
- 河海大学数据库知识点归纳整理
河海大学数据库知识点归纳整理 前言 该文档主要包含了对河海大学数据库这一门课程进行的知识点归纳,并且提供了ppt等其他复习资料. 河海大学许卓明老师数据库期末考点! 1 CH01 CH02 数据模型与 ...
- JAVA面试知识点个人整理
本文是一些JAVA面试的基本知识点个人整理,方便自己记忆回顾,摘自ThinkWon大神的系列文章JAVA面试题. 文章目录 静态内部类 == 和equal 参数传递 BIO,NIO,AIO File的 ...
最新文章
- 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(二)
- 介绍一个好用的静态图片合成为 gif 动画的在线网站
- 123. 买卖股票的最3佳时机 III
- java poi读取word中附件_Java POI导入word, 带图片
- postfix邮件系统之邮件客户端无法收邮件问题解析
- BZOJ3171:[TJOI2013]循环格
- android条码扫描串口,串口条码扫描器的正确安装方法[图解]
- 一套完整的后台管理系统
- 影响力最大化 IC 蒙特卡洛模拟 贪心算法
- 利用 cv2 给图片添加文字
- 杭电操作系统实验三--- 实现模拟shell(arm架构华为云)
- 力扣(566.303)补8.25
- Linux ubuntu 服务器部署详细教程
- 程序员是青春饭吗-最新研究显示程序员的能力从50 岁后才会开始下降
- QT设置背景图片以及设置按钮
- 10055 - Hashmat the Brave Warrior
- 手写一个vue中英文翻译组件
- CentOS Rescure救援模式恢复数据记录
- 如何编写Shell脚本
- 诛仙2018.3服务器维护,2021年8月3日全服停机更新维护公告
热门文章
- java通过jdbc登陆系统_JDBC模拟登录
- 鸟哥linux群,【鸟哥的linux私房菜-学习笔记】linux的帐号与群组
- BUUCTF(pwn)hgame2018_flag_server(简单的栈溢出)
- CTF-Python常用函数语段详解;
- centos php mcrypt,CentOS yum php mcrypt 扩展安装方法
- 对Python中路径操作指南
- 不用第三方库,也能用 Python 作图,效果还不错
- 计算机丢失tlps,win7系统下PS提示计算机丢失tlpsplib10.dll文件的解决方法
- VLC播放器如何录制rtsp流生成视频文件?
- VSCODE更改文件时,提示:EACCES: permission denied的解决办法(ubuntu16.04虚拟机)