一、组件介绍(怎么确保得到a3)
1、组件内有a1,a2,用来接收父组件的传值,需要通过a1,a2来得到一个 a3
2、父组件在使用时a1,a2的来源是通过两个不同的api获取的,a1,a2都是异步的
<script>
export default {
name: 'Test',
props: {
a1: { // 异步数据
type: Array,
default: () => []
},
a2: { // 异步数据
type: Array,
default: () => []
}
},
data() {
return {
a3: []
}
},
watch: {
a1: {
deep: true,
handler() {
if (this.a1 && this.a2) {
this.initA3()
}
}
},
a2: {
deep: true,
handler() {
if (this.a1 && this.a2) {
this.initA3()
}
}
}
},
methods: {
initA3() {
// 对 a1、a2 进行运算后得到 a3,这里都是简化场景
a3 = a1 + a2
}
}
}
</script>
二、解决方案(目前的方案)
1、前提条件如下:(1)它是组件,尽量是不去要求父组件去控制api请求顺序,比如async await控制两个请求的顺序(2)a1,a2的来源是可能随时变的,可能通过一个按钮切换这样,不限制父组件的使用
2、目前想的 watch 是对 a1,a2进行监听,然后发生变化时,得到 a3
3、计算属性computed行不通,不能深度监听,因为这个a3是一个副作用了