# native-component

> __微信 Windows 版__：支持
> 
> __微信 Mac 版__：支持
> 
> __微信 鸿蒙 OS 版__：支持

渲染框架支持情况：Skyline （使用最新 [Nightly](/miniprogram/dev/devtools/nightly.html) 工具调试）、WebView

## 功能描述

小程序中的部分组件是由客户端创建的原生组件。

## 原生组件

小程序中的部分组件是由客户端创建的原生组件，这些组件有：

- [`camera`](/miniprogram/dev/component/camera)
- [`canvas`](/miniprogram/dev/component/canvas)
- [`input`](/miniprogram/dev/component/input)（仅在focus时表现为原生组件）
- [`live-player`](/miniprogram/dev/component/live-player)
- [`live-pusher`](/miniprogram/dev/component/live-pusher)
- [`map`](/miniprogram/dev/component/map)
- [`textarea`](/miniprogram/dev/component/textarea)
- [`video`](/miniprogram/dev/component/video)

## 原生组件同层渲染

同层渲染是为了解决原生组件的层级问题，在支持同层渲染后，原生组件与其它组件可以随意叠加，有关层级的限制将不再存在。但需要注意的是，组件内部仍由原生渲染，样式一般还是对原生组件内部无效。

注：
- **当前所有原生组件（除 input 组件 focus 状态）均已支持同层渲染。**
- **鸿蒙 OS 下只支持同层渲染。**

## 原生组件的使用限制

__除事件相关，同层渲染下已无以下限制__

由于原生组件脱离在 WebView 渲染流程外，因此在使用时有以下限制：

- 原生组件的层级是**最高**的，所以页面中的其他组件无论设置 `z-index` 为多少，都无法盖在原生组件上。
  - 后插入的原生组件可以覆盖之前的原生组件。
- 原生组件还无法在 [picker-view](/miniprogram/dev/component/picker-view) 中使用。
  - 基础库 2.4.4 以下版本，原生组件不支持在 [scroll-view](/miniprogram/dev/component/scroll-view)、[swiper](/miniprogram/dev/component/swiper)、[movable-view](/miniprogram/dev/component/movable-view) 中使用。
- 部分 CSS 样式无法应用于原生组件，例如：
  - 无法对原生组件设置 CSS 动画
  - 无法定义原生组件为 `position: fixed`
  - 不能在父级节点使用 `overflow: hidden` 来裁剪原生组件的显示区域
- 原生组件的事件监听不能使用 `bind:eventname` 的写法，只支持 `bindeventname`。原生组件也不支持 catch 和 capture 的事件绑定方式。
- 原生组件会遮挡 vConsole 弹出的调试面板。
- 原生组件可通过 bindrendererror 事件监听同层渲染失败的情况并进行降级处理。 同层渲染失败通常由以下原因造成：
  - Android 端运行环境缺少同层渲染所需的内核
  - iOS 端由于实现方式的限制，在页面节点树不稳定的情况下存在一定的失败率

__在工具上，原生组件是用web组件模拟的，因此很多情况并不能很好的还原真机的表现，建议开发者在使用到原生组件时尽量在真机上进行调试。__

## cover-view 与 cover-image

为了解决原生组件层级最高的限制。小程序专门提供了 [`cover-view`](/miniprogram/dev/component/cover-view) 和 [`cover-image`](/miniprogram/dev/component/cover-image) 组件，可以覆盖在**部分**原生组件上面。这两个组件也是原生组件，但是使用限制与其他原生组件有所不同。

## 原生组件相对层级

__同层渲染下已无以下问题__

为了可以调整原生组件之间的相对层级位置，小程序在 v2.7.0 及以上版本支持在样式中声明 z-index 来指定原生组件的层级。该 z-index 仅调整原生组件之间的层级顺序，其层级仍**高于**其他非原生组件。
