微信小程序主包如何使用分包中的自定义组件?
报错

解决
通过
占位组件来解决报错问题
- 在父组件
.json中引入组件并配置componentPlaceholder
javascript
{
"usingComponents": {
"componentA": "../components/compA",
},
"componentPlaceholder": {
"componentA": "view"
}
}
- 页面上使用
html
<componentA />
说明:
在使用如 分包异步化 或 用时注入 等特性时,自定义组件所引用的其他自定义组件,在刚开始进行渲染时可能处于不可用的状态。此时,为了使渲染过程不被阻塞,不可用的自定义组件需要一个 「占位组件」(Component placeholder)。基础库会用占位组件替代不可用组件进行渲染,在该组件可用后再将占位组件替换回该组件。
一个自定义组件的占位组件可以是另一个自定义组件、或一个内置组件
注意事项
- 当一个组件被指定为占位组件时(如上例中的
comp-c),为其指定占位组件是无效的。可以理解为如果一个组件需要作为其他组件的占位组件,则它必须在一开始就是可用的; - 目前自定义组件不可用的情况包括:
- 使用分包异步化特性的情况下,引用了其他分包的组件,而对应分包还未下载;
- 使用用时注入特性的情况下,该组件还未注入;
- 如果一个组件不可用,且其占位组件不存在,则渲染时会报错并抛出;
组件还未注入; - 如果一个组件不可用,且其占位组件不存在,则渲染时会报错并抛出;
- 如果一个组件不存在,但为其指定了可用的占位组件,则占位组件可以被正常渲染,但后续尝试准备替换时会报错并抛出