Vue指令

news/2024/5/19 3:24:28/文章来源:https://blog.csdn.net/m0_53619602/article/details/126709856

Vue指令分为内置指令自定义指令

内置指令

v-bind

单向绑定解析表达式,

简写: xxx

 <div id="root">单项数据绑定:<input type="text" v-bind:value="name"><br></div>

v-model

双向绑定数据

 <div id="root">双向数据绑定:<input type="text" v-model:value="name"></div>

 v-for

遍历数组、对象、字符串

格式:  v-for = " (k,index)  in  Obj/arr/str " :key='index'

  •    key:里面的值可以是 index,也可以是k里面唯一的标识符
  •    当key的值为index时,也许会出现问题
<li v-for="(p,k) in filPersons" :key="k">{{p.name}}-{{p.age}}-{{p.sex}}
</li>

key的使用

1. 虚拟DOM中key的作用: 

key虚拟DOM对象的标识,当数据发生变化时,Vue会根据【新数据】生成【新的虚拟DOM】,随后Vue进行【新虚拟DOM】【旧虚拟DOM】差异比较

2.对比规则: 

 (1).旧虚拟DOM中找到了与新虚拟DOM相同的key:

  1. 若虚拟DOM中内容没变, 直接使用之前的真实DOM!
  2. 若虚拟DOM中内容变了, 则生成新的真实DOM,随后替换掉页面中之前的真实DOM

(2).旧虚拟DOM中未找到与新虚拟DOM相同的key

  •  创建新的真实DOM,随后渲染到到页面。

 3. 用index作为key可能会引发的问题: 

1. 若对数据进行:逆序添加逆序删除破坏顺序操作:

  产生没有必要的真实DOM更新 ==> 界面效果没问题, 但效率低

2. 如果结构中还包含输入类的DOM

 会产生错误DOM更新 ==> 界面有问题

 

4. 如何选择key 

  1. 最好使用每条数据的唯一标识作为key, 比如id、手机号、身份证号、学号等唯一值。
  2. 如果不存在对数据的逆序添加、逆序删除等破坏顺序操作,仅用于渲染列表用于展示,使用index作为key是没有问题的。

v-on

绑定事件监听


简写:

​
<button @click="addSex">添加一个性别属性</button>
<button v-on:click="addSex">添加一个性别属性</button>​

 v-if

条件渲染(动态控制节点是否存在)

<p v-if="isShow">你好啊</p>
  • isShow的值为true时,p标签显示
  •  isShow的值为false时,p标签不显示

v-else

条件渲染(动态控制节点是否存在)

 <div v-if='n>5'>n的值大于5</div><div v-else>n的值是5</div>
  • v-if和v-else之间不能穿插其他的标签,如果穿插了其他标签,那之后的v-if和v-else就失效了

v-show

条件渲染(动态控制节点是否展示) 

<div v-if='isShow'>你好啊</div>

 v-show和v-if的区别

1.原理

v-show指令:

元素始终被渲染到HTML,它只是简单的伪元素设置css的style属性,当不满足条件的元素被设置style=“display:none”的样,是通过修改元素的的CSS属性(display)来决定实现显示还是隐藏

v-if指令:

满足条件是会渲染到html中,不满足条件时是不会渲染到html中的是通过操纵dom元素来进行切换显示

v-text

作用:  向其所在的节点中渲染文本内容

与插值语法的区别: v-text会替换掉节点中的内容,{{xx}}则不会 

v-html指令

作用:向指定节点中渲染包含html结构的内容


与插值语法的区别

  •         v-html会替换掉节点中的所有内容,{{xx}}则不会
  •         v-html可以识别html结构


    注意:

  •         v-html有安全性问题
  •         在网站上动态渲染任意html是非常危险的,容易导致XSS攻击
  •          一定要在可信的内容上使用v-html永不要用在用户提交的内容上 
<div id="root"><h1>欢迎来到{{name}},性别:{{sex}}</h1><!-- v-text会替换掉节点中的内容,{{xx}}则不会 --><h1 v-text="sex">欢迎来到</h1><h1 v-html="a"></h1></div><script type="text/javascript">Vue.config.productionTip = false;//阻止 vue 在启动时生成生产提示。new Vue({el: '#root',data: {name: "尚硅谷",sex: "<span>男</span>",a: "<a href='www.baidu.com'>百度</a>"}})</script>

 v-cloak指令(没有值)

  • 本质是一个特殊的属性Vue实例创建完毕并接管容器后,会删掉v-cloak属性
  • 使用css配合v-cloak可以解决网速慢时展示出{{xxx}}的问题
<div id="root"><h2 v-cloak>{{name}}</h2></div>

v-once指令

  • v-once所在节点在初次动态渲染后,就视为静态内容
  • 以后数据的改变不会引起v-once所在结构的更新,可以用于优化性能 

 v-pre指令

  • 跳过其所在节点的编译过程
  • 可利用他跳过:没有使用指令语法、没有使用插值语法的节点,会加快编译
<div id="root"><h1 v-pre>v-pre指令:跳过其所在节点的编译过程</h1><h1 v-once>n的初始值为:{{n}}</h1><h1>n的值为:{{n}}</h1><button @click="n++">点击n加1</button></div><script type="text/javascript">Vue.config.productionTip = false;//阻止 vue 在启动时生成生产提示。new Vue({el: '#root',data: {n: 1}})</script>


Vue 的内置指令就总结到这里了,接下来总结Vue的自定义指令

自定义指令

1. 定义语法

局部指令

对象式:

new Vue({directives:{指令名:配置对象}
})

 函数式:

new Vue ({directives(指令名,回调函数)
})

 全局指令

  • Vue.directive(指令名,配置对象)
  • Vue.directive(指令名,回调函数)

2. 配置对象中常用的3个回调

bind: 指令与元素成功绑定时调用
inserted: 指令所在元素被插入页面时调用
update:指令所在模板结构被重新解析式调用


注意:

  •         指令定义时不加v-,但是使用时要加v-
  •         指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名
 <div id="root"><h2>n的值为: <span v-text="n"></span></h2><h2>n的值为: <span v-big="n"></span></h2><button @click="n++">n++</button><hr><input type="text" v-fbind:value="n"></div><script>//全局定义Vue.directive('fbind', {//指令与元素成功绑定时(一上来)bind(element, binding) {element.value = binding.value;},//指令所在元素被插入页面时inserted(element, binding) {element.focus();},//指令所在的模板被重新解析时update(element, binding) {element.value = binding.value;}})new Vue({el: '#root',data: {n: 1},//局部定义directives: {//big函数何时会被调用?1. 指令与元素成功绑定时(一上来)。 2、 指令所在的模板被重新解析时//函数式big(element, binding) {element.innerText = binding.value * 10;},// //对象式// fbind: {//     //指令与元素成功绑定时(一上来)//     bind(element, binding) {//         element.value = binding.value;//     },//     //指令所在元素被插入页面时//     inserted(element, binding) {//         element.focus();//     },//     //指令所在的模板被重新解析时//     update(element, binding) {//         element.value = binding.value;//     }// }}})</script>


今天的总结到此结束了,如果你觉得对你有帮助的话,记得  👍  💗   

 💐Per aspera ad astra  循此苦旅,以觅繁星 💐  

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

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

相关文章

2023秋招——快手数据研发一、二面面经

&#x1f33c;今天来总结一下快手数据研发的一、二面&#xff0c;在面试中进步&#xff0c;在总结中成长&#xff01;对往期内容感兴趣的小伙伴可以参考下面&#x1f447;&#xff1a; 链接: 2022暑期实习字节跳动数据研发面试经历-基础数仓.链接: 2022百度大数据开发工程师实…

three.js实现鼠标拾取例子

基本思路 <script> var renderer,scene,camera; var light; var raycaster,//相机->鼠标的射线mouse,//鼠标所在位置actionObject;//选中的物体 init(); animation();function init(){//渲染器//场景//相机//方向光//创建2000个立方体//创建射线//创建鼠标二维向量(圆…

epoll实现异步请求数据---以UDP为例

文章目录同步UDP请求数据的问题异步请求的模型具体的代码同步UDP请求数据的问题 不管是请求DNS资源还是其他资源。如果以串行的方式请求数据&#xff0c;也就是send以后recv阻塞等待获取数据&#xff0c;这样做的效率非常低效&#xff0c;网络延迟、服务器处理请求、再加上rec…

【C# 学习笔记 ②】C#基本语法(数组、判断和循环、字符串、枚举、结构体)

由于在自己的工作和学习过程中&#xff0c;只查看某个大佬的教程或文章无法满足自己的学习需求和解决遇到的问题&#xff0c;所以自己在追赶大佬们步伐的基础上&#xff0c;又自己总结、整理、汇总了一些资料&#xff0c;方便自己理解和后续回顾&#xff0c;同时也希望给大家带…

【我不熟悉的css】07. css命名,bem规范,跟着组件库element-ui学习组件命名

在去年&#xff0c;我总结了一篇文章&#xff0c;跟着element-ui学习css命名 【系统学习css】跟着element-ui学习css的命名_我有一棵树的博客-CSDN博客每日鸡汤&#xff0c;每一个你想要学习的念头都是未来的你向自己求救写css 最烦人的就是给class起名字了&#xff0c;这里不…

这一次,我们把AI自治数据库带到了世界人工智能大会上

9月3日,2022世界人工智能大会(WAIC)在上海圆满落幕。WAIC2022 秉持“智联世界”理念,通过线上线下联动的会展形式,汇聚顶级科学家、企业家、政府官员、专家学者、国际组织、投资人、创新团队一同探讨科技前沿话题,推动全球“共创、共建、共融、共治、共享、共赢”。WAIC …

【Python刷题篇】——Python入门 09 字典(上)

&#x1f935;‍♂️ 个人主页: 北极的三哈 个人主页 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;Python领域新星创作者。 &#x1f4d2; 系列专栏&#xff1a;《牛客题库-Python篇》 &#x1f310;推荐《牛客网》——找工作神器|笔试题库|面试经验|实习经验内推&am…

【数据结构与算法】之深入解析“乘法表中第K小的数”的求解思路与算法示例

一、题目要求 几乎每一个人都用乘法表,但是你能在乘法表中快速找到第 k 小的数字吗?乘法表是大小为 m x n 的一个整数矩阵,其中 mat[i][j] == i * j(下标从 1 开始)。给你三个整数 m、n 和 k,请你在大小为 m x n 的乘法表中,找出并返回第 k 小的数字。示例 1:输入:m =…

MATLAB | 全网唯一,三元相映射图绘制(三元相分级统计地图)

示例 对上期的补充 本期文章名叫三元相映射图绘制&#xff0c;但不单单讲这一点&#xff0c;同时会对上一篇多元映射地图做出补充https://slandarer.blog.csdn.net/article/details/126702967&#xff1a; 上篇中可以绘制这样的三变量映射地图&#xff1a; 但这只是对多边形…

Vue学习之--------路由(Router)的基本使用(1)(2022/9/5)

理解&#xff1a; 一个路由&#xff08;route&#xff09;就是一组映射关系&#xff08;key - value&#xff09;&#xff0c;多个路由需要路由器&#xff08;router&#xff09;进行管理。前端路由&#xff1a;key是路径&#xff0c;value是组件。控制页面的跳转 文章目录1、基…

01-linux基础命令

1、常用命令 常用Linux命令的基本使用序号命令对应英文作用01 ls list 查看当前目录下的内容02 pwd print working derectory 查看当前所在文件夹03 cd [目录名] change directory 切换文件夹04 touch [文件名] touch 如果文件不存在, 新建文件05 mkdir [目录名] make director…

【JavaSE】多线程篇(三)用户线程、守护线程与线程的7大状态

&#x1f481; 个人主页&#xff1a;黄小黄的博客主页 ❤️ 支持我&#xff1a;&#x1f44d; 点赞 &#x1f337; 收藏 &#x1f918;关注 &#x1f38f; 格言&#xff1a;All miracles start from sometime somewhere, make it right now. 本文来自专栏&#xff1a;JavaSE从入…

关于使用@Scheduled()注解造成的多任务冲突问题解决

问题描述&#xff1a; 2022-08-18 01:59:00.001 INFO [irms-transfer-service,,,] 15 --- [ scheduling-1] c.s.i.t.service.impl.ProjectManageSvc : -------定时扫描导出任务开启------- 2022-08-18 01:59:00.004 INFO [irms-transfer-service,,,] 15 --- [ schedu…

如何查看navicat已连接用户的密码

1:从注册表中查看加密后的密码。1.1:windows键+r,输入 regedit1.2:在注册表中找到 \HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\navicat\servers 并找到 UserName 即 账号1.3:从上面步骤中,打开注册表、并找到如下图片中的密码栏:Pwd(加密的密码)2:解密密码,打开在线工…

React 应用程序中的简单路由

React 应用程序中的简单路由一个简单的、可扩展的路由解决方案可以满足您的应用程序的所有需求,而不会引入像 React-Router 这样的工具所提供的复杂性。 进入: 浏览器的 窗口位置 目的。 它提供了为您的应用程序创建一个简单的“路由”系统所需的一切。例如,这里是什么 窗口…

【Selenium Other】一键杀死进程 进程清理大师

前言 有位读者留言&#xff0c;遇到了一件两难全的事儿。在关闭Python使用os模块执行cmd命令调用的chromedriver驱动打开的chrome浏览器时&#xff0c;有以下问题~ 使用driver.quit()退出浏览器&#xff0c;chromedriver.exe进程退出&#xff0c;关闭没有窗口使用driver.close(…

2021年中青杯B题港珠澳大桥桥梁设计与安全策略数学建模全过程文档及程序

港珠澳大桥桥梁设计与安全策略 原题再现 “港珠澳大桥是国家工程、国之重器&#xff0c;其建设创下多项世界之最&#xff0c;非常了不起&#xff0c;体现了一个国家逢山开路、遇水架桥的奋斗精神&#xff0c;体现了我国综合国力、自主创新能力&#xff0c;体现了勇创世界一流的…

nuxt vue 按住鼠标左右滑动方案收集

目录前言vue-dragscrollvuescroll自己写个指令参考前言 最近在做PC端网页左右滑动&#xff0c;找到以下3种方案&#xff0c;做个记录。 vue-dragscroll 官方文档&#xff1a;https://vue-dragscroll.donfalcon.com/安装&#xff08;注意版本&#xff09; npm install vue-d…

VUE 如何将父组件中的数据传递到子组件中

在我们的项目中我们使用 axios 进行异步调用。 因为异步调用的问题,如果我不采取手段,子页面没有办法获得父页面中的数据,页面将会显示为 没有数据。问题和解决 这个问题的原因就是子组件在初始化的时候,父组件还没有获得数据。 可以使用的方法是 v-if 进行判断。 对比上面…

[数据结构]~栈和队列(0-1)

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接收失败&#xff0c;但我不能接收放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正。 目录 一 “栈…