(三)Vue - 基本指令之v-for、v-if和v-show

(三)Vue - 基本指令之v-for、v-if和v-show

指令:v-for

for循环,可遍历普通数组、对象数组、对象和数字;
说千遍道万遍不如直接上代码:

<body>
  <div id="app">
  <h4>遍历普通数组</h4>
    <!-- list1: [1, 2, 3, 4, 5, 6] -->
    <p v-for="(item, i) in list1">索引值:{{i}}  --- item项目:{{item}}</p>

    <h4>遍历对象数组</h4>
    <!-- list2: [{ id: 1, name: '张三' },{ id: 2, name: '李四' }] -->
    <p v-for="(user, i) in list2">Id:{{ user.id }} --- 名字:{{ user.name }} --- 索引:{{i}}</p>

    <h4>遍历对象</h4>
    <!-- user: {id: 1,name: '张三',gender: '男'} -->
    <!-- 注意:在遍历对象身上的键值对的时候, 除了 有  val  key  ,在第三个位置还有 一个 索引  -->
    <p v-for="(value, key, i) in user">值是: {{ value }} --- 键是: {{key}} -- 索引: {{i}}</p>

    <h4>遍历数字</h4>
    <!-- 注意:如果使用 v-for 迭代数字的话,前面的 count 值从 1 开始 -->
    <p v-for="count in 3">循环:{{ count }} 次循环</p>
  </div>

  <script>
    // 创建 Vue 实例
    var vm = new Vue({
      el: '#app',
      data: {
        list1: [1, 2, 3],
        list2: [
          { id: 1, name: '张三' },
          { id: 2, name: '李四' }
        ],
        user: {id: 1,name: '张三',gender: '男'}
      },
      methods: {}
    });
  </script>
</body>

先看代码再看效果图:

这里是引用

注意:2.2.0+ 的版本里,当在组件中使用 v-for 时,必须要携带key属性。

  1. v-for 循环的时候,key 属性只能使用 number获取string
  2. key 在使用的时候,必须使用 v-bind 属性绑定的形式,指定 key 的值

不管是再react还是Vue,循环都需要携带key属性,具体原因各位看官可详细查阅相关资料

指令:v-if 和v-show

v-if和v-show指令的作用是类似的,但是又存在部分差异,正所谓存在即合理。

先看下用法:

   <h3 v-if="flag">我是v-if控制的元素</h3>
   <h3 v-show="flag">我是v-show控制的元素</h3>

效果均能通过flag的值来控制h3标签的显示隐藏

区别:

  • v-if 每次都会重新删除或创建元素
  • v-show 每次不会重新进行DOM的删除和创建操作,只是切换了元素的 display:none 样式
  • 相比下如果v-if初始化性能较高,但是隐藏显示切换性能较差,v-show相反;所以当元素初始化时候就决定了后续不在改变的显示隐藏状态情况下使用v-if较好,需要频繁切换隐藏显示状态则使用v-show

指令:v-else 和v-else-if

可以用v-else-if 添加一个 “else if” 块
可以用 v-else 指令给 v-if 添加一个 “else” 块
这2个指令较为简单,需要组合v-if来使用:


<div id="app">
    <div v-if="type === 'A'">
      A
    </div>
    <div v-else-if="type === 'B'">
      B
    </div>
    <div v-else-if="type === 'C'">
      C
    </div>
    <div v-else>
      Not A/B/C
    </div>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    type: 'C'
  }
})
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值