diff --git a/docs/plugin/uts-component.md b/docs/plugin/uts-component.md
index 5990c922dd2103389b8180ba0ab1a310517526d3..b03d57660f2e74532f120e4bfdd5c263898f160a 100644
--- a/docs/plugin/uts-component.md
+++ b/docs/plugin/uts-component.md
@@ -121,330 +121,421 @@ UTS组件的优势在于,它秉承了UTS的跨平台特性,统一的UTS语
> Android
-```ts
+```html
-
-
-
+
+
+
+
+
+
+```
+
+> iOS
+
+```html
+
+
+
+
+
-
+ /**
+ * 组件被创建,组件第一个生命周期,
+ * 在内存中被占用的时候被调用,开发者可以在这里执行一些需要提前执行的初始化逻辑
+ * [可选实现]
+ */
+ created() {
+ },
+ /**
+ * 对应平台的view载体即将被创建,对应前端beforeMount
+ * [可选实现]
+ */
+ NVBeforeLoad() {
-```
+ },
+ /**
+ * 创建原生View,必须定义返回值类型
+ * 开发者需要重点实现这个函数,声明原生组件被创建出来的过程,以及最终生成的原生组件类型
+ * [必须实现]
+ */
+ NVLoad() : UIButton {
+ //必须实现
+ buttonClickListsner = new ButtonClickListsner(this)
-> iOS
+ let button = new UIButton()
+ button.setTitle(this.buttontext, for = UIControl.State.normal)
+ // 在 swift target-action 对应的方法需要以OC的方式来调用,那么OC语言中用Selector来表示一个方法的名称(又称方法选择器),创建一个Selector可以使用 Selector("functionName") 的方式。
+ const method = Selector("buttonClickAction")
+ if (buttonClickListsner != null) {
+ button.addTarget(buttonClickListsner!, action = method, for = UIControl.Event.touchUpInside)
+ }
+ return button
+ },
-```ts
-
-
-
-
-
- },
- /**
- * 原生View将释放
- * [可选实现]
- */
- NVBeforeUnload() {},
- /**
- * 原生View已释放,这里可以做释放View之后的操作
- * [可选实现]
- */
- NVUnloaded() {
+
```
:::
@@ -521,6 +612,7 @@ NVMeasure 用于告诉排版系统,组件自身需要的宽高,具体的调
但是部分场景下,组件开发者需要自己维护宽高,则需要开发者重写此函数
+**注意:只有非容器组件生效,容器组件不应该重写此函数**
+ NVUpdateStyles
@@ -536,10 +628,29 @@ NVUpdateStyles(styles: Map){
}
```
++ NVRecycler
+HBuilderX 4.0版本起支持,仅uni-app x App-Android平台支持
+当UTS组件在`list-view`组件中使用时,由于[复用机制](../component/list-view.md),UTS组件可能表现异常(UI、事件回调等),因此,组件开发者需要在此函数中进行相应的逻辑处理。
-**注意:只有非容器组件生效,容器组件不应该重写此函数**
+比如我们使用UTS组件封装了一个Android原生的`EditText`控件(输入框),代码如下
+
+```html
+NVLoad() : EditText {
+ let editText = new EditText($androidContext!);
+ return editText;
+}
+```
+
+然后我们在`list-view`组件中使用该UTS组件,当我们在第一个输入框中随机输入几个字符后,开始滚动列表,会发现之前输入的字符又出现在下面某个`list-item`中,这就是一个典型的由于复用机制导致的UI状态异常问题。此时我们就需要在NVRecycler()函数中处理该问题,代码如下
+
+```html
+NVRecycler() {
+ // 发生复用时置空输入框内容
+ this.$el?.setText("")
+}
+```
[vue3 生命周期暂不支持](https://uniapp.dcloud.net.cn/tutorial/vue3-api.html#%E9%80%89%E9%A1%B9-%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E9%92%A9%E5%AD%90)