uniapp中component原生vue组件的坑
首先是component组件的介绍:
https://uniapp.dcloud.net.cn/component/vue-component.html#component
作用:渲染一个“元组件”为动态组件。依is
的值,来决定哪个组件被渲染。
平台差异说明
App | H5 | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节跳动小程序、飞书小程序 | QQ小程序 | 快应用 | 360小程序 | 快手小程序 | 京东小程序 |
---|---|---|---|---|---|---|---|---|---|---|
√ | √ | x | x | x | x | x | x | x | x | x |
使用的时候,比如:
<compontent is="comp"></compontent>
但是在我开发APP中使用的时候,我是这样使用的:通过动态绑定is,指定渲染不同的组件,然后通过v-bind传递数据,如下:
computed: {
compSelect() {
// 首页
if(this.list[this.swiperIndex].catid == 0) {
// console.log(this.list[this.swiperIndex].catid)
return ListHome;
}
// 专题
else if(this.list[this.swiperIndex].catid == CATID_ZHUANTI) {
return ListNormal;
}
// 影像
else if(this.list[this.swiperIndex].catid == CATID_IMAGE) {
return ListImage;
}
// 其他普通
else {
return ListNormal;
}
}
},
<compontent :is="compSelect" :list="list[swiperIndex].arr"></compontent>
结果就是在PC上预览,一点问题没有,但是在手机上就是一片空白:
最终经过搜寻,结论如下:
https://ask.dcloud.net.cn/question/71152
component目前还不支持v-bind方法,所以无法将数据动态传递进去,从而导致组件无法获取数据,也就无法渲染了。同时,component的is还不支持动态的组件,只能是写死的~~~,但是论坛网友说vue3版本的编译可以支持:is,由于我本项目使用的v2版本,目前无法测试,等测试之后补全结论。
没办法,只有在模板中用条件渲染处理了~~