博客列表 >vue常用指令以及列表渲染+条件渲染和事件处理

vue常用指令以及列表渲染+条件渲染和事件处理

想做一个躺平的程序员
想做一个躺平的程序员原创
2022年04月26日 13:37:04786浏览

1.vue常用指令

createappp:创建vue实例
mount:挂载vue应用
![](https://img.php.cn/upload/image/782/576/844/1650945961720616.png

v-text指令:更新textConent

v-html指令:更新元素的innerHTML,可以解析html标签

  1. 注意:内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译

2.vue条件渲染

v-show:元素始终会渲染并保留在dom中,v-show只是简单地切换元素display样式

  1. 注意,v-show 不支持 <template> 元素,也不支持 v-else

v-if:用于条件性地渲染一块内容,这块内容只会在指令的表达式返回true被渲染

  1. <div class="app">
  2. <div v-show="inshow">我是不显示的</div>
  3. <div v-if="inif">我是显示的</div>
  4. <div v-else>我是次要显示内容</div>
  5. </div>
  6. <script>
  7. //createapp:创建vue实例
  8. // mount:挂载vue应用;
  9. const app=Vue.createApp({
  10. data(){
  11. return{
  12. msg:'hello word',
  13. isshow:false,
  14. inif:false,
  15. }
  16. }
  17. }).mount('.app');
  18. </script>

我们可以看到 v-show只是简单的将display切换为none

2.1 v-if与v-show

  1. v-if 是“真正”的条件渲染,因为它会确保在切换过程中,条件块内的事件监听器和子组件适当地被销毁和重建

  2. v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做一直到条件第一次变为真时,才会开始渲染条件块

  3. 相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换

  4. 一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好

3.列表渲染

v-for:基于一个数组或对象来渲染一个列表,指令需要使用(item,index) of items 形式的语法

参数说明: items是源数据数组,item则是被迭代的数组元素的别名,index是索引,保持唯一性

  1. <div class="app">
  2. <ul>
  3. <li v-for="(item,index) of info" :key="index">
  4. {{item}}
  5. </li>
  6. </ul>
  7. </div>
  1. <script>
  2. //createapp:创建vue实例
  3. // mount:挂载vue应用;
  4. const app=Vue.createApp({
  5. data(){
  6. return{
  7. info:["李四","张三","王五","吴多星"],
  8. }
  9. }
  10. }).mount('.app');
  11. </script>

页面效果

4. v-model和style绑定与class

4.1

v-model:实现表单输入和应用状态之间的双向绑定,它负责监听用户的输入事件来更新数据

v-model的修饰符:lazy,number,trim,
  1. v-model.lazy:值修改操作完成之后才会发生变化。
  2. v-model.number:值修改,保存其值为number类型
  3. v-model.trim:自动过滤用户输入的首尾空白字符
  1. <div class="app">
  2. <input type="text" name="" id="" v-model.trim="msg">
  3. <p>
  4. {{msg}}
  5. </p>
  6. </div>
  7. `
  1. <script>
  2. //createapp:创建vue实例
  3. // mount:挂载vue应用;
  4. const app=Vue.createApp({
  5. data(){
  6. return{
  7. msg:'',
  8. }
  9. }
  10. }).mount('.app');
  11. </script>

4.2

v-bind: 用于绑定html属性,由于复用性强,因此可用 : 来简写

  1. <style>
  2. .active{
  3. color: red;
  4. }
  5. </style>
  6. <div class="app">
  7. <!-- 修改样式 -->
  8. <p v-bind:style="info">今天你努力了吗</p>
  9. <!-- 可以通过切换class来改变css样式 -->
  10. <p :class="{active:isactive}">
  11. class改变样式
  12. </p>
  13. </div>
  1. <script>
  2. //createapp:创建vue实例
  3. // mount:挂载vue应用;
  4. const app=Vue.createApp({
  5. data(){
  6. return{
  7. info:{
  8. background:"blue",
  9. },
  10. isactive:true
  11. }
  12. }
  13. }).mount('.app');
  14. </script>

页面效果

4.3事件

  1. vue中通过v-on(缩写为 @ 符号)来监听dom事件,用法为v-on:事件名="test" @事件名="test"
点击事件修饰符
  1. prevent:阻止默认事件(常用)
  2. stop:阻止事件冒泡(常用)
  3. once:事件只触发一次(常用)
  4. capture:使用事件的捕获模式
  5. self:只有event.target是当前操作的元素才触发事件
  6. passive:事件的默认行为立即执行,无需等待事件回避执行完毕
  1. <div class="app">
  2. <button v-on:click="show">显示</button>
  3. <p v-show="isinfo">{{msg}}</p>
  4. </div>
  1. <script>
  2. //createapp:创建vue实例
  3. // mount:挂载vue应用;
  4. const app=Vue.createApp({
  5. data(){
  6. return{
  7. msg:"hello word",
  8. isinfo:false
  9. }
  10. },
  11. methods:{
  12. show(ev){
  13. this.$data.isinfo=true;
  14. },
  15. }
  16. }).mount('.app');
  17. </script>

没点击显示按钮之前

点击显示按钮之后

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议