在线教育网站建设,做美食软件的视频网站,有哪些公众号是小黄油的,网站价格套餐Vue.js 循环语句
在Vue开发中#xff0c;for循环是我们最常遇见的场景之一#xff0c;我们知道常见的遍历方式有for循环#xff0c;for of、forEach、for in.虽然在开发过程中#xff0c;这几种方式基本上可以满足我们大多数的场景#xff0c;但是你真的知道他们之间的区…Vue.js 循环语句
在Vue开发中for循环是我们最常遇见的场景之一我们知道常见的遍历方式有for循环for of、forEach、for in.虽然在开发过程中这几种方式基本上可以满足我们大多数的场景但是你真的知道他们之间的区别吗接下来跟大家分享一下他们之间的差异
始终在v-for循环中使用key
首先我们将讨论大多数Vue开发人员已经知道的常见最佳做法——在 v-for 循环中使用 :key。通过设置一个惟一的键属性它可以确保组件以您期望的方式工作。 果我们不使用keyVue将尝试使DOM尽可能高效这可能意味着 v-for 元素可能会出现乱序或其他不可预测的行为。如果我们对每个元素都有唯一的键引用那么我们就可以更好地准确地预测DOM将如何操作。
ulli v-forproduct in products:keyproduct._id {{ product.name }}/li
/ul在一个范围内循环
尽管大多数情况下v-for 用于遍历数组或对象但在某些情况下我们肯定只希望循环执行一定次数。
例如假设我们正在为在线商店创建一个分页系统而我们只希望每页显示10个产品。使用一个变量来跟踪当前的页码我们可以像这样处理分页。
ulli v-forindex in 10 :keyindex{{ products[page * 10 index] }}/li
/ul使用计算属性或方法代替
为避免上述问题我们应该在遍历模板中的数据之前对其进行过滤。有两种非常相似的方法
使用计算属性使用过滤方法 让我们快速地介绍一下这两种方法。
首先我们只需要设置一个计算属性为了获得与之前的v-if相同的功能代码应如下所示。
ulli v-forproducts in productsUnderFifty :keyproduct._id {{ product.name }}/li
/ul// ...
scriptexport default {data () {return {products: []}},computed: {productsUnderFifty: function () {return this.products.filter(product product.price 50)}}}
/script下面的代码几乎相同但是使用方法改变了我们访问模板中的值的方式如果我们希望能够将变量传递给筛选器那么方法是最好的选择。
ulli v-forproducts in productsUnderPrice(50) :keyproduct._id {{ product.name }}/li
/ul// ...scriptexport default {data () {return {products: []}},methods: {productsUnderPrice (price) {return this.products.filter(product product.price price)}}}
/script遍历一个对象
到目前为止我们只真正看过使用 v-for 遍历数组但是我们可以轻松地遍历对象的键值对。 与访问元素的索引类似我们必须向循环中添加另一个值。如果我们用一个参数遍历一个对象我们将遍历所有的项。 如果我们添加另一个参数我们将获得items 和 key如果添加第三个我们还可以访问 v-for 循环的索引。 假设我们要遍历产品中的每个媒体资源。
ulli v-for(products, index) in products :keyproduct._id span v-for(item, key, index) in product :keykey{{ item }}/span/li
/ul显示过滤/排序后的结果
我们可以对数组的元素进行处理后再显示出来一般可以通过创建一个计算属性来返回过滤或排序后的数组。
div idappulli v-forn in evenNumbers{{ n }}/li/ul
/divv-for 迭代整数
v-for 也可以循环整数
div idappulli v-forn in 10{{ n }}/li/ul
/divv-for/v-if 联合使用
div idappselect changechangeVal($event) v-modelselOptiontemplate v-for(site,index) in sites :sitesite :indexindex :keysite.id!-- 索引为 1 的设为默认值索引值从0 开始--option v-if index 1 :valuesite.name selected{{site.name}}/optionoption v-else :valuesite.name{{site.name}}/option/template/selectdiv您选中了:{{selOption}}/div
/divscript
const app {data() {return {selOption: Runoob,sites: [{id:1,name:Google},{id:2,name:Runoob},{id:3,name:Taobao},]}},methods:{changeVal:function(event){this.selOption event.target.value;alert(你选中了this.selOption);}}
}Vue.createApp(app).mount(#app)
/script