Vue3学习之路 | 循环语句

130 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

循环语句

v-for指令

v-for循环语句是很常用的语法,可以用于渲染数组、结构体中的数据到一个列表、页面中。但是v-for指令需要使用"site in sites"型的特殊语法,其中sites指的是源数据数组,site是数组元素迭代的别名。

  • 代码示例:
<div id="appdemo">
  <ol>
    <li v-for="site in sites">
      {{ site.text }}
    </li>
  </ol>
</div>
<script>
const app = {
  data() {
    return {
      sites: [
        { text: '苹果' },
        { text: '香蕉' },
        { text: '菠萝' }
      ]
    }
  }
}

Vue.createApp(app).mount('#appdemo')
</script>

效果:

image.png

索引值参数

v-for指令还支持一个可选的第二个参数,参数值为当前项的索引(数组下标):

  • 代码示例:
<div id="appdemo">
  <ul>
    <li v-for="(site, index) in sites">
      {{ index }} -{{ site.text }}
    </li>
  </ul>
</div>
<script>
const app = {
  data() {
    return {
      sites: [
        { text: '苹果' },
        { text: '香蕉' },
        { text: '菠萝' }
      ]
    }
  }
}

Vue.createApp(app).mount('#appdemo')
</script>

效果:

image.png

template

v-for指令也可以像条件语句一样使用template模板,。

  • 代码示例:
 <template v-for="site in sites">
		<li>{{ site.text }}</li>
		<li>《++++++++++++》</li>
  </template>

只需将以上代码替换掉ul标签中的代码即可。

迭代对象

v-for指令可以通过对象的属性来迭代数据渲染到页面中。

<div id="appdemo">
  <ul>
    <li v-for="value in strut">
    {{ value }}
    </li>
  </ul>
</div>
 
<script>
const app = {
  data() {
    return {
      strut: {
        name: 'ikun',
        url: 'www.jntm.com',
        slogan: '披金成王,伴坤远航'
      }
    }
  }
}
Vue.createApp(app).mount('#appdemo')
</script>

提供键名和索引

因为对象的数据是键值对的形式,所以我们可以添加键名作为参数和循环出键名和对象数据.

  • 代码示例:
<ul> 
    <li v-for="(value, key) in object"> 
        {{ key }} : {{ value }}
            </li>
                </ul>

v-for指令还可以添加第三个参所作为索引。

  • 代码示例:
<ul>
    <li v-for="(value, key, index) in object">
     {{ index }}. {{ key }} : {{ value }}
    </li>
  </ul>

整数

v-for循环可以直接迭代整数。

<ul>
// 从1循环到1000
    <li v-for="n in 1000">
     {{ n }}
    </li>
  </ul>

循环数据处理过后的结果

我们可以对数组、对象数据处理之后再进行渲染出来。

  • 代码示例
<div id="appdemo">
  <ul>
    <li v-for="num in ChooseNumbers">{{ num }}</li>
  </ul>
</div>
 
<script>
const app = {
    data() {
        return {
            numbers: [ 1, 2, 3, 4, 5,6,8,10 ]
	     }
    },
    computed: {
        ChooseNumbers() {
        // 将nummber数组中对2取余,余数为零的数放入ChooseNumber中。
            return this.numbers.filter(number => number % 2 === 0)
        }
    }
}
 
Vue.createApp(app).mount('#appdemo')
</script>