微信 Windows 版:支持
微信 Mac 版:支持
微信 鸿蒙 OS 版:支持
渲染框架支持情况:Skyline (使用最新 Nightly 工具调试)、WebView
功能描述
微信小程序中的部分组件是由客户端创建的原生组件。
原生组件
微信小程序中的部分组件是由客户端创建的原生组件,这些组件有:
cameracanvasinput(仅在focus时表现为原生组件)live-playerlive-pushermaptextareavideo
原生组件同层渲染
同层渲染是为了解决原生组件的层级问题,在支持同层渲染后,原生组件与其它组件可以随意叠加,有关层级的限制将不再存在。但需要注意的是,组件内部仍由原生渲染,样式一般还是对原生组件内部无效。
注:
- 当前所有原生组件(除 input 组件 focus 状态)均已支持同层渲染。
- 鸿蒙 OS 下只支持同层渲染。
原生组件的使用限制
除事件相关,同层渲染下已无以下限制
由于原生组件脱离在 WebView 渲染流程外,因此在使用时有以下限制:
- 原生组件的层级是最高的,所以页面中的其他组件无论设置
z-index为多少,都无法盖在原生组件上。- 后插入的原生组件可以覆盖之前的原生组件。
- 原生组件还无法在 picker-view 中使用。
- 基础库 2.4.4 以下版本,原生组件不支持在 scroll-view、swiper、movable-view 中使用。
- 部分 CSS 样式无法应用于原生组件,例如:
- 无法对原生组件设置 CSS 动画
- 无法定义原生组件为
position: fixed - 不能在父级节点使用
overflow: hidden来裁剪原生组件的显示区域
- 原生组件的事件监听不能使用
bind:eventname的写法,只支持bindeventname。原生组件也不支持 catch 和 capture 的事件绑定方式。 - 原生组件会遮挡 vConsole 弹出的调试面板。
- 原生组件可通过 bindrendererror 事件监听同层渲染失败的情况并进行降级处理。 同层渲染失败通常由以下原因造成:
- Android 端运行环境缺少同层渲染所需的内核
- iOS 端由于实现方式的限制,在页面节点树不稳定的情况下存在一定的失败率