今天碰到vue开发父子组件prop传参的问题,情况是这样的:子组件需要一个参数value(以后均有该参数表示父子组件的参数),所需value需由父组件通过prop传入,父组件中的value初始值为空,在created钩子函数中发起http请求获取数据然后更新value,结果子组件在created钩子函数无法获取到该参数
分析:
父组件由于是异步获取的,但是传参的时候是在获取数据之前
解决思路:
子组件加一个显示条件,核心思路就是:当所有的请求都已经成功请求到的时候,子组件再显示
代码
子组件加上: v-if="loadAll === 3"
请求完成后加上:this.loadAll++
父组件代码如下:
<template>
<TTTable v-if="loadAll === 3" :value="value" :column="column">
</TTTable>
</template>
<script>
import TTTable from '@/components/TTTable'
import * as requestFun from '@/api/user'
export default {
name: 'InspectionPlan',
components: { TTTable },
data() {
return {
loadAll: 0,
value: {}
}
},
beforeCreate() {
},
created() {
this.initColumn()
},
methods: {
initColumn() {
var THIS = this
this.coreList({ name: 'inspection_plan', type: 'inspection_plan_period' }).then(function(response) {
value.XX=response.XX
THIS.loadAll++
})
this.coreList({ name: 'inspection_plan', type: 'state' }).then(function(response) {
value.XX=response.XX
THIS.loadAll++
})
// requestFun.inspectionRouteManageList()
this.coreList({ name: 'inspection_plan', type: 'sign_type' }).then(function(response) {
value.XX=response.XX
THIS.loadAll++
})
}
}
}
</script>