• Vue中判断语句和循环语句的基础用法 v-if和v-for的注意事项


    目录

    一、判断语句

    v-if、v-else、v-else-if

    v-show

    案例

    二、循环语句

    遍历数组

    遍历对象

    三、v-if和v-for的注意事项


    一、判断语句

    v-if、v-else、v-else-if

    v-if是判断是否将DOM元素显示出来

    不满足条件的元素,会直接删除,不会存在浏览器上面

    v-show

    也是用来判断,是否将DOM元素在页面上显示,但是与v-if有着区别,它的不显示是通过display:none;实现的,还是存在浏览上。

    1. "app">
    2. <h2 v-if="age<18">未成年h2>
    3. <h2 v-else-if="age<60">壮年h2>
    4. <h2 v-else>老年h2>
    5. <h2 v-show="flag">showh2>
    6. <h2 v-if="flag">ifh2>
    7. div>
    8. <script src="./vue.js">script>
    9. <script>
    10. let vm = new Vue({
    11. el:"#app",
    12. data(){
    13. return{
    14. age:71,
    15. flag:false//true会显示,false不会显示
    16. }
    17. }
    18. })
    19. script>

    如下图片显示,不存在时v-if和v-show的显示状态

    可以发现show是被display:none;影藏起来了

    if已经从这个世界上消失了

    案例

    这里用简单的if判断,可以通过按钮控制不同的输入模式

    这里也会出现一个细节上的问题,因为Vue会出现大量的复用情况,所以这里需要在input表单中设置一个key值,使其出现差别,在以输入内容的表单,切换后内容会也会被取消掉。

    1. <div id="app">
    2. <span v-if="usname">
    3. <label for="uname">用户名label>
    4. <input type="text" id="username" placeholder="输入用户名" key="index">
    5. span>
    6. <span v-else="usname">
    7. <label for="email">用户名邮箱label>
    8. <input type="text" id="email" placeholder="输入邮箱" key="index1">
    9. span>
    10. <button @click="usname=!usname">选择button>
    11. div>
    12. <script src="./vue.js">script>
    13. <script>
    14. let vm = new Vue({
    15. el:"#app",
    16. data(){
    17. return{
    18. usname:true
    19. }
    20. }
    21. })
    22. script>

    二、循环语句

    如下案例

    遍历数组

    是通过循环来实现点击变色,这里遍历出了下标和内容,在页面上显示出来

    v-for="(item,index) in list"

    item值index索引

    1. <style>
    2. .active{
    3. color: red;
    4. }
    5. style>
    6. head>
    7. <body>
    8. <div id="app">
    9. <ul>
    10. <li :class="currentIndex==index?'active':''" @click="change(index)" v-for="(item,index) in list">{{index}}--{{item}}li>
    11. ul>
    12. div>
    13. <script src="./vue.js">script>
    14. <script>
    15. let vm = new Vue({
    16. el:'#app',
    17. data(){
    18. return {
    19. currentIndex:0,
    20. list:["海王","海贼王","火影忍者","复仇者联盟"],
    21. }
    22. },
    23. methods:{
    24. change(index){
    25. this.currentIndex=index
    26. }
    27. }
    28. })
    29. script>
    30. body>

    遍历对象

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Documenttitle>
    8. head>
    9. <body>
    10. <div id="app">
    11. <ul>
    12. <li v-for="(item,key) in user" >{{key+"-"+item}}li>
    13. ul>
    14. <ul>
    15. <li v-for="(item,key,index) in user" >{{key+"-"+item+"-"+index}}li>
    16. ul>
    17. div>
    18. <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js">script>
    19. <script>
    20. const app = new Vue({
    21. el:"#app",
    22. data:{
    23. user:{
    24. name:"zzz",
    25. height:188,
    26. age:24
    27. }
    28. }
    29. })
    30. script>
    31. body>
    32. html>

    三、v-if和v-for的注意事项

    如果将v-if和v-for 在同一个标签内使用,会出现每次先循环,在去判断渲染,在性能上出现了浪费

    要注意这个细节,在写代码时,可以将for包含到if判断中,使其不在一个标签内,从而避免了同是使用的情况。

    这里,还会出现一个问题,如果使用index为索引,在渲染表单的时候就会出现,表单添加,表单内容没有出现变化,需要自己起一个唯一标志符。

     

  • 相关阅读:
    jmeter之跨线程关联
    uniapp 使用svg
    Redis篇之redis服务的启动方式总结
    系统架构:软件工程速成
    CentOS 7.6安装JDK8过程(通过官网下载压缩包方式)
    C语言--一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高
    Go 语言搭建个人博客(qiucode.cn 重构篇 三)
    数据挖掘与分析课程笔记(Chapter 20)
    Selenium 隐藏浏览器指纹特征的几种方式
    基于低代码平台实现的内外OA协同办公系统
  • 原文地址:https://blog.csdn.net/yzq0820/article/details/126125498