赞
踩
例如有一个Vue项目,使用列表默认是顺序渲染的,如果要倒序,就reverse()可以了么,其实不然
首先看一个Vue
例子,
template模板如下
<block v-for="(item,index) in revImages" :key="index">
<image class="layer" :src="item.src" :style="{
left:item.left+'px',
top:item.top+'px',
width:item.width+'px',
height:item.height+'px',
display:item.isDisplay?'block':'none'
}"></image>
</block>
script脚本逻辑如下
export default {
data(){
return {
images:[...],
}
},
computed:{
revImages(){
return this.images.reverse();
},
},
}
其中获取的
revImages
已反转,若下次有变化,images
又跟着反转回来,显然这是不对的,
实际上,我们看到的revImages
就是images
的引用,或投影
因果与心理学:看得见的只是现相,看不见的才是本质.
这样做,使用它的索引,倒序就可以了,
export default {
computed:{
revImageIndexs(){
let indexs = [];
for(let i=this.images.length-1; i>=0; i--) indexs.push(i);
return indexs;
},
},
}
revImageIndexs
就是封装成一个索引数组
然后,渲染页面改成这样,渲染列表就能倒序了
<block v-for="(item,index) in revImageIndexs" :key="index">
<image class="layer" :src="images[item].src" :style="{
left:images[item].left+'px',
top:images[item].top+'px',
width:images[item].width+'px',
height:images[item].height+'px',
display:images[item].isDisplay?'block':'none'
}"></image>
</block>
最后看完,领悟了吗,来都来了,点个赞再走呗~
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。