axios同步请求问题

新手上路,请多包涵

这个是我代码
Vue

<div class="btns">  
 <el-row> <el-button type="danger">加入购物车</el-button>  
 <el-button type="primary" class="sets_button" @click="addfav(id)" v-if="isfav == false">  
  收藏  
  </el-button>  
 <el-button type="primary" class="sets_button" @click="delfav(id)" v-else>  
  已收藏  
  </el-button>  
 </el-row>
 </div>

Vue created

getallfav({  
  headers: {  
    Authorization: 'JWT '+localStorage.getItem('token')  
  }  
}).then(res=>{  
  for(let i of res){  
    console.log(i.goods.id)  
    if (i.goods.id == this.id){  
      this.isfav = true  
  console.log('已收藏')  
      break  
  }  
  }  
})

页面在created完成的时候true并没有赋值给this.isfav,响应完的时候页面已经加载完毕,请问有没有办法让created赋值完后页面再加载呢

阅读 2k
2 个回答

你应该将data中的数据一并标出来. 就目前代码未看出什么逻辑问题
然后你这个for可以考虑改进一下, 比如用findIndex 或 find 去查找是否存在于已收藏列表

this.isFav = !!(res.find(item => item.goods.id ==== this.id));

犀利一笑^_^

异步的问题吧 使用一下async await 让created的周期在函数调用完成后再进入下一个生命周期

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题