用keep-alive也不起作用
每次点击按钮还会在获取一次数据
<van-tabs swipeable animated @click="btnclick" @change="cha">
<van-tab v-for="(item, index) in arr" :title="item.name" :key="index">
你是想点击当前 active 项,不去请求后台吗?还是在一开始就将所有数据全部加载出来 点击不请求呢?
从代码上看的话 你绑定了两个事件,你是不是在这两个事件里面做了请求操作呢?
你这又有@click 又有@change 当然点一下就请求一下 你不想请求数据就把这两个方法都去掉 mounted的时候就把数据加载到arr里
看描述不是很明确,如果你想点击的第一次请求,后面点击不请求的话。我给的思路是:定义一个变量isFirst = true,
@click="btnclick"在这里点击的方法里面加一层嵌套判断是否第一次请求。请求之后把isFirst = false。这样的话只会请求一次,后面isFirst为false就不会走if里面了。
btnclick(){
if(isFirst){
....请求方法;
之后isFirst = false
}
}
用变量控制,比如初始化个变量 isFirst:true
那么tabs绑定的@change="onChange" 事件里判断isFirst再发起请求
onChange(){
if(this.isFirst) 发起请求
}
----------
但是,我不明白你的需求,你是在每个tab页里放了个子组件吗,我觉得你是在@change事件里请求了数据传给了子组件,所以每次点击都会请求。
你最好把请求放到子组件的mounted生命周期里,这样怎么切换它也只会请求一次
如有帮助,麻烦点个[采纳此答案]谢谢