1、问题
开发过程中有个需求是遍历列表绘制div,div的样式是后端接口传来的,一开始这种写法,:style=“formatStyle(item)”,写在了模板中
这样写发现一个问题,只要页面发生重绘,比如页面输入框输入数字,formatStyle
会重复执行,太耗性能
2、解决
在拿到列表数据时给列表每个对象加个iStyle属性
<div v-for="item in copylayerList" :key="item.id">
<div class="layer_div" :style="item.iStyle" @click="editLaywer(item)">
<span class="layer_div_text">{{item.name}}</span>
</div>
</div>
我这里是访问接口拿到数据后,遍历数组给数组对象添加属性
http
.get("/XXX", this.listQuery)
.then((res) => {
if (res.code == 200) {
this.copylayerList = [...res.data.list];
this.copylayerList.map((item) => {
item.iStyle = this.formatStyle(item)
})
}
});