今天遇到一个tab页切换,但是出现数据仍然保持,渲染和数据获取顺序错误的情况,导致渲染报错。花费了几个小时特此记录一下。
问题描述:增加一个显示错误信息的功能,错误信息后端采用单独的接口返回数据。错误信息采用v-if进行条件渲染。由于代码逻辑比较复杂不展开说明。
报错情况:
打印情况:正常情况下先打印tab标识=>后端数据=>组件传值,但是在点击错误信息返回后发现打印顺序出错了。
解决方案:
在网上查了大量的资料,首先想到获取数据于渲染的顺序问题,排查过后发现获取数据的生命周期都是正确的,使用了nextTick,forceUpdate都不管用。
后面受启发会不会是两个接口但是共用的一个变量,导致切换时变量内容未及时更新。思路:在请求数据的方法之前对数组进行一次清空;卧槽,几个小时的问题就这么解决了。
原始:
更改后: