在vue开发中,可能会遇到组件循环引用的情况,即组件B为组件A的子组件,在组件A中又需要打开组件B,即组件B也是组件A的子组件,此时组件A、B就形成了循环引用,如果我们直接在Script中import,会报组件注册错误。
<script>
import B from './B.vue'
</script>
......
componets:{
B
}
可以通过vue的异步组件,局部注册子组件解决这一问题。
动态组件 & 异步组件https://cn.vuejs.org/v2/guide/components-dynamic-async.html 但是,此时如继续使用nextTick,会出现nextTick中的子组件仍未加载的错误,表现为nextTick“失效”,可通过计时器延时解决这一问题。
this.fromItemLoadPossible = true
const that = this
this.$nextTick(() => {
setTimeout(() => {
that.$refs.listItemForm.openYXorBG(record, '变更', true)
that.$refs.listItemForm.bglxdm = 'bg'
that.$refs.listItemForm.itemID = record.id
}, 200)
})