在网上看到几个解决方案,大多都是说生命周期问题或者说是缓存问题,一 一尝试后并没有解决掉这个问题,所以自己仔细思考了一下,参考了一下之前自己的代码为什么没有出现这个问题,得出了一下结论。
用删除例子来举例(其中,this.getTableDarta()方法是重新请求数据方法)
removeOptions({ optionId: id }).then(() => {
this.$message({
message: '删除成功',
type: 'success'
})
}
this.getTableData()
当我点击删除按钮触发该操作时,第一下明显发送请求成功,但表单数据并没有像我想象中的即刻重新请求,而是得点两下才能把数据刷新出来,达到删除效果。
这时我们可以看到我们发送了两个请求,一个是删除数据的请求,一个是重新请求数据的请求。猜测可能请求发送出去了,但是在服务端删除操作还没有完成时,获取数据已经完成,所以返回时数据并没有改变,所以我对代码进行了修改。
removeOptions({ optionId: id }).then(() => {
this.$message({
message: '删除成功',
type: 'success'
})
this.getTableData()
}
当删除请求成功后,我再执行想要的操作(即是更新数据操作),那请求就不会同步发出了,而是有个先后的顺序性。
注:两处代码的不同为是否把 this.getTableData() 放进then里