报错但是程序能正常运行
H5 a.b.c问题报错
(underfined b 则是前面的a找不到)寻找问题:log前面的 a
原因:vue模板解析比发请求要快
<scroll-view class="navcroll" scroll-x="true" >
<view class="navItem" :class="{active:navIndex===-1}"@click="changIndex(-1)">推荐</view>
<view class="navItem" :class="{active:navIndex===index}"@click="changIndex(index)" v-for="(item,index) in indexData.kingKongModule.kingKongList" :key="item.L1Id">{{item.text}}</view>
//v-for渲染时数据没请求到(异步请求)
</scroll-view>
//获取首页数据
async getIndexData() {
// const res = await request('/getIndexData'); //小程序
const res = await request('/api/getIndexData'); //H5
console.log('==========', res);
this.indexData = res.indexData;
},
解决办法:v-if判断index是否有数据,请求到数据以后在渲染
<scroll-view class="navcroll" scroll-x="true" v-if="indexData.kingKongModule"> //v-if判断节点是否有数据
<view class="navItem" :class="{active:navIndex===-1}"@click="changIndex(-1)">推荐</view>
<view class="navItem" :class="{active:navIndex===index}"@click="changIndex(index)" v-for="(item,index) in indexData.kingKongModule.kingKongList" :key="item.L1Id">{{item.text}}</view>
</scroll-view>
面试题:
v-if:添加删除 DOM
v-show:显示、隐藏 DOM display:none
面试题:v-if 和v-for可以放在同一个标签下吗?为什么
答案 :不能。v-for优先级高,需要同时使用的话,v-if放到父元素上
为什么小程序不报错但是H5报错
答案:因为小程序编译之后的代码,放到开发工具里加载,所以不会出现上面的情况
而 js 是解释型语言,一条一条解释导致渲染快过请求