From e9799a5b4b9f221447cba49e8fbf7bea6b6c0c42 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Wed, 09 Apr 2025 20:25:41 +0800
Subject: [PATCH] 实现微信获取头像组件(小程序原生组件)

---
 weappNative/chooseAvatar/weappChooseAvatar.js   |   46 +++++++++++++++++++++++
 weappNative/chooseAvatar/weappChooseAvatar.wxml |   11 +++++
 weappNative/chooseAvatar/weappChooseAvatar.json |    4 ++
 weappNative/chooseAvatar/weappChooseAvatar.wxss |   10 +++++
 4 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/weappNative/chooseAvatar/weappChooseAvatar.js b/weappNative/chooseAvatar/weappChooseAvatar.js
new file mode 100644
index 0000000..2071405
--- /dev/null
+++ b/weappNative/chooseAvatar/weappChooseAvatar.js
@@ -0,0 +1,46 @@
+/**
+ * 微信小程序原生头像选择组件
+ * 用于在小程序环境中调用原生的头像选择功能
+ * @author Tevin
+ * @tutorial
+ *  第一步:注册为 Taro 元素组件
+ *      打开 Taro 页面的 config.js 配置文件,在 usingComponents 中注册为元素组件
+ *      export default {
+ *          usingComponents: {
+ *              'weapp-choose-avatar': '@components/weappNative/chooseAvatar/weappChooseAvatar',
+ *          }
+ *      }
+ *  第二步:在页面中使用元素组件(直接当元素使用)
+ *      <weapp-choose-avatar @chooseAvatar="evt=>onChooseAvatar(evt)">
+ *          <button>选择头像</button>
+ *      </weapp-choose-avatar>
+ *
+ * @notice
+ *  1. 样式完全由内容决定,组件内部所有样式已清空
+ *  2. 绑定事件需要用“@”,返回参数为头像地址
+ */
+Component({
+    behaviors: [],
+    options: {
+        styleIsolation: 'apply-shared',
+    },
+    // 相当于 props
+    properties: {
+        // 禁用状态
+        disabled: {
+            type: Boolean,
+            value: false,
+        },
+        // 按钮文本
+        content: {
+            type: String,
+            value: '按钮',
+        },
+    },
+    data: {},
+    methods: {
+        handleChooseAvatar(evt) {
+            this.triggerEvent('chooseAvatar', evt.detail);
+        },
+    },
+});
diff --git a/weappNative/chooseAvatar/weappChooseAvatar.json b/weappNative/chooseAvatar/weappChooseAvatar.json
new file mode 100644
index 0000000..59a1db6
--- /dev/null
+++ b/weappNative/chooseAvatar/weappChooseAvatar.json
@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}
diff --git a/weappNative/chooseAvatar/weappChooseAvatar.wxml b/weappNative/chooseAvatar/weappChooseAvatar.wxml
new file mode 100644
index 0000000..84d82ae
--- /dev/null
+++ b/weappNative/chooseAvatar/weappChooseAvatar.wxml
@@ -0,0 +1,11 @@
+<button
+    class="c-choose-avatar"
+    type="default"
+    plain="true"
+    size="mini"
+    disabled="{{ disabled }}"
+    open-type="chooseAvatar"
+    bindchooseavatar="{{ 'handleChooseAvatar' }}"
+>
+    <slot></slot>
+</button>
diff --git a/weappNative/chooseAvatar/weappChooseAvatar.wxss b/weappNative/chooseAvatar/weappChooseAvatar.wxss
new file mode 100644
index 0000000..4581835
--- /dev/null
+++ b/weappNative/chooseAvatar/weappChooseAvatar.wxss
@@ -0,0 +1,10 @@
+.c-choose-avatar {
+    width: auto;
+    height: auto;
+    padding-left: 0rpx !important;
+    padding-right: 0rpx !important;
+    margin: 0;
+    border-width: 0 !important;
+    border-color: transparent !important;
+    -webkit-tap-highlight-color: transparent !important;
+}
\ No newline at end of file

--
Gitblit v1.9.1