腾讯低代码平台中如何动态加载不同组件?
在腾讯低代码平台开发表单页面时,我需要根据用户角色动态显示不同子组件,但用v-if切换时页面直接报错。
比如我定义了两个组件:AdminForm和,在数据模型里用roleType控制显示。代码写成这样:
export default {
data() {
return {
roleType: this.$page.params.role // 从页面参数获取角色
}
}
}
运行时提示Unknown custom element: AdminForm,但单独引入组件又正常显示。是不是平台有特殊的动态组件写法?试过用keep-alive和is属性都不行。
v-if切换可能会导致组件解析失败,特别是当组件未提前注册时会报Unknown custom element。解决方法是用
<component :is="xxx">来动态加载。你试试这样写:然后模板部分改成:
这种方式既解决了动态加载问题,又避免了未知元素的错误。记得把组件提前在
components里注册好,不然还是会有解析问题。如果还报错,检查下是不是平台对按需加载有额外限制,有时候得看看文档里有没有特殊说明。反正我是踩过这个坑,这么改就正常了。
v-if不行。改成这样:模板里写:
<component :is="currentComponent" />。记得在components里注册好所有要用的子组件。