@gmcb/uv-ui 0.2.27 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/LICENSE +21 -0
- package/README.md +95 -141
- package/docs/api/configs/color.md +52 -0
- package/docs/api/index.md +77 -0
- package/docs/api/mixins/mpShare.md +95 -0
- package/docs/api/request/apiManage.md +88 -0
- package/docs/api/request/http.md +451 -0
- package/docs/api/utils/colorSwitch.md +78 -0
- package/docs/api/utils/debounce.md +104 -0
- package/docs/api/utils/fastUse.md +246 -0
- package/docs/api/utils/getRect.md +238 -0
- package/docs/api/utils/guid.md +41 -0
- package/docs/api/utils/index.md +55 -0
- package/docs/api/utils/intro.md +25 -0
- package/docs/api/utils/object.md +171 -0
- package/docs/api/utils/queryParams.md +68 -0
- package/docs/api/utils/random.md +23 -0
- package/docs/api/utils/randomArray.md +28 -0
- package/docs/api/utils/route.md +121 -0
- package/docs/api/utils/test.md +237 -0
- package/docs/api/utils/time.md +81 -0
- package/docs/api/utils/trim.md +24 -0
- package/docs/components/actionSheet.md +236 -0
- package/docs/components/addQQGroup.md +5 -0
- package/docs/components/album.md +91 -0
- package/docs/components/alert.md +83 -0
- package/docs/components/avatar.md +152 -0
- package/docs/components/backTop.md +181 -0
- package/docs/components/badge.md +117 -0
- package/docs/components/button.md +196 -0
- package/docs/components/calendar.md +398 -0
- package/docs/components/calendars.md +294 -0
- package/docs/components/cell.md +185 -0
- package/docs/components/checkbox.md +281 -0
- package/docs/components/circleProgress.md +5 -0
- package/docs/components/code.md +162 -0
- package/docs/components/codeInput.md +175 -0
- package/docs/components/collapse.md +250 -0
- package/docs/components/color.md +324 -0
- package/docs/components/common.md +126 -0
- package/docs/components/countDown.md +166 -0
- package/docs/components/countTo.md +140 -0
- package/docs/components/datetimePicker.md +283 -0
- package/docs/components/diff1.x.md +190 -0
- package/docs/components/divider.md +88 -0
- package/docs/components/downloadSetting.md +54 -0
- package/docs/components/dropDown.md +375 -0
- package/docs/components/empty.md +99 -0
- package/docs/components/feature.md +261 -0
- package/docs/components/form.md +736 -0
- package/docs/components/gap.md +49 -0
- package/docs/components/grid.md +225 -0
- package/docs/components/icon.md +101 -0
- package/docs/components/image.md +182 -0
- package/docs/components/index.md +110 -0
- package/docs/components/indexList.md +133 -0
- package/docs/components/input.md +250 -0
- package/docs/components/install.md +59 -0
- package/docs/components/intro.md +32 -0
- package/docs/components/keyboard.md +226 -0
- package/docs/components/layout.md +310 -0
- package/docs/components/line.md +85 -0
- package/docs/components/lineProgress.md +141 -0
- package/docs/components/link.md +89 -0
- package/docs/components/list.md +223 -0
- package/docs/components/loadMore.md +140 -0
- package/docs/components/loadingIcon.md +144 -0
- package/docs/components/loadingPage.md +92 -0
- package/docs/components/modal.md +230 -0
- package/docs/components/more.md +13 -0
- package/docs/components/navbar.md +192 -0
- package/docs/components/noNetwork.md +116 -0
- package/docs/components/noticeBar.md +131 -0
- package/docs/components/notify.md +204 -0
- package/docs/components/npmSetting.md +64 -0
- package/docs/components/numberBox.md +257 -0
- package/docs/components/nvue.md +170 -0
- package/docs/components/overlay.md +117 -0
- package/docs/components/parse.md +204 -0
- package/docs/components/pickColor.md +112 -0
- package/docs/components/picker.md +357 -0
- package/docs/components/popup.md +221 -0
- package/docs/components/problem.md +300 -0
- package/docs/components/qrcode.md +169 -0
- package/docs/components/quickstart.md +33 -0
- package/docs/components/radio.md +256 -0
- package/docs/components/rate.md +128 -0
- package/docs/components/read.md +163 -0
- package/docs/components/readMore.md +227 -0
- package/docs/components/resource.md +17 -0
- package/docs/components/scrollList.md +218 -0
- package/docs/components/search.md +160 -0
- package/docs/components/setting.md +111 -0
- package/docs/components/settingDesc.md +66 -0
- package/docs/components/skeleton.md +105 -0
- package/docs/components/skeletons.md +323 -0
- package/docs/components/slider.md +157 -0
- package/docs/components/steps.md +189 -0
- package/docs/components/sticky.md +76 -0
- package/docs/components/subsection.md +183 -0
- package/docs/components/swipeAction.md +279 -0
- package/docs/components/swiper.md +352 -0
- package/docs/components/switch.md +216 -0
- package/docs/components/tabbar.md +263 -0
- package/docs/components/table.md +5 -0
- package/docs/components/tabs.md +364 -0
- package/docs/components/tag.md +227 -0
- package/docs/components/testPic.md +20 -0
- package/docs/components/text.md +157 -0
- package/docs/components/textarea.md +121 -0
- package/docs/components/toast.md +124 -0
- package/docs/components/tooltip.md +98 -0
- package/docs/components/transition.md +404 -0
- package/docs/components/upload.md +253 -0
- package/docs/components/vtabs.md +332 -0
- package/docs/components/vueUse.md +45 -0
- package/docs/components/vuexDetail.md +103 -0
- package/docs/components/waterfall.md +651 -0
- package/docs/faq/index.md +53 -0
- package/docs/guide/codeHint.md +44 -0
- package/docs/guide/customIcon.md +168 -0
- package/docs/guide/demo.md +92 -0
- package/docs/guide/design.md +56 -0
- package/docs/guide/globalVariable.md +239 -0
- package/docs/guide/i18n.md +194 -0
- package/docs/guide/index.md +28 -0
- package/docs/guide/note.md +74 -0
- package/docs/guide/safeAreaInset.md +64 -0
- package/docs/guide/theme.md +67 -0
- package/docs/index.md +88 -0
- package/libs/config/config.js +0 -10
- package/libs/css/color.scss +15 -14
- package/package.json +7 -2
- package/theme.scss +2 -1
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
## 便捷工具
|
|
2
|
+
|
|
3
|
+
此专题内容为一些方便用户快速,便捷使用的小工具,可能是uv-ui的一些方法的简易版,或者对uni的一些方法进行二次封装,方便用户
|
|
4
|
+
快速使用。
|
|
5
|
+
|
|
6
|
+
### 按需引入
|
|
7
|
+
|
|
8
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入:
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
// 引入,实例中未写完,自己根据需求写
|
|
12
|
+
import { os, sys, platform } from '@gmcb/uv-ui/libs/function/index.js';
|
|
13
|
+
import platform from '@gmcb/uv-ui/libs/function/platform.js';
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### os()
|
|
17
|
+
|
|
18
|
+
此方法用于返回平台的名称,为小写的`ios`或`android`
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
uni.$uv.os()
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### sys()
|
|
26
|
+
|
|
27
|
+
此方法用于获取设备的信息,相当于uni.getSystemInfoSync()的效果
|
|
28
|
+
|
|
29
|
+
```js
|
|
30
|
+
uni.$uv.sys()
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### platform
|
|
35
|
+
|
|
36
|
+
此`属性`用于获取当前运行的平台名称,相较于`uni-app`系统自带的条件编译的区别是,此方式让我们可以通过`js`的`if | else if`进行判断,
|
|
37
|
+
您可以结合实际场景进行使用。
|
|
38
|
+
|
|
39
|
+
- 注意:此属性返回的结果,和`uni-app`的条件编译名称有差别,并且结果都为小写。
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
使用前配置:如果您的项目为`vue-cli`模式,必须要在`根目录`的`vue.config.js`进行配置才有效,如下:
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
// vue.config.js,如没有此文件则手动创建
|
|
46
|
+
module.exports = {
|
|
47
|
+
transpileDependencies: ['@gmcb/uv-ui']
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
使用:
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
// 返回'h5'
|
|
55
|
+
uni.$uv.platform
|
|
56
|
+
|
|
57
|
+
// 条件判断
|
|
58
|
+
const { platform } = uni.$u
|
|
59
|
+
if(platform === 'app') {
|
|
60
|
+
......
|
|
61
|
+
} else if(platform === 'nvue') {
|
|
62
|
+
......
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### 各平台对应返回值如下表:
|
|
67
|
+
|
|
68
|
+
| 平台 | 返回值 |
|
|
69
|
+
|:- |:- |
|
|
70
|
+
| VUE3,HBuilderX 3.2.0+ | vue3 |
|
|
71
|
+
| App | plus |
|
|
72
|
+
| App nvue | nvue |
|
|
73
|
+
| H5 | h5 |
|
|
74
|
+
| 微信小程序 | weixin |
|
|
75
|
+
| 支付宝小程序 | alipay |
|
|
76
|
+
| 百度小程序 | baidu |
|
|
77
|
+
| 字节跳动小程序、飞书小程序 | toutiao |
|
|
78
|
+
| QQ小程序 | qq |
|
|
79
|
+
| 快手小程序 | kuaishou |
|
|
80
|
+
| 360小程序 | 360 |
|
|
81
|
+
| 微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序 | mp |
|
|
82
|
+
| 快应用通用(包含联盟、华为) | webview |
|
|
83
|
+
| 快应用联盟 | webview-union |
|
|
84
|
+
| 快应用华为 | webview-huawei |
|
|
85
|
+
|
|
86
|
+
### range(min, max, value)
|
|
87
|
+
|
|
88
|
+
此方法用于限制`value`的大小,如果其在`min`和`max`之间,则不变;如果其小于`min`,则取`min`值;如果其大于`max`,则取`max`值。
|
|
89
|
+
|
|
90
|
+
```js
|
|
91
|
+
// 最终结果为5
|
|
92
|
+
uni.$uv.range(1, 5, 8)
|
|
93
|
+
|
|
94
|
+
// 最终结果为4
|
|
95
|
+
uni.$uv.range(1, 5, 4)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
### getPx(value [, unit = false])
|
|
100
|
+
|
|
101
|
+
此方法用于返回带单位的值的数值结果,如果第二个参数为`true`,返回的结果将会带上`px`的单位;可接受的值如下:
|
|
102
|
+
|
|
103
|
+
- 带`upx`和`rpx`单位,返回使用`uni.upx2px`转换后,为`px`单位的结果
|
|
104
|
+
- 带`px`单位,返回去掉`px`单位的具体数值
|
|
105
|
+
- 具体数值,如`5`,将会返回`5`
|
|
106
|
+
|
|
107
|
+
```js
|
|
108
|
+
// 返回10
|
|
109
|
+
uni.$uv.getPx('10rpx')
|
|
110
|
+
|
|
111
|
+
// 返回12
|
|
112
|
+
uni.$uv.getPx('12px')
|
|
113
|
+
|
|
114
|
+
// 返回14
|
|
115
|
+
uni.$uv.getPx(14)
|
|
116
|
+
|
|
117
|
+
// 返回类似10px的结果
|
|
118
|
+
uni.$uv.getPx('20rpx', true)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
### sleep(value)
|
|
123
|
+
|
|
124
|
+
延时一定时间进行回调,类似于`promise`的使用方式
|
|
125
|
+
|
|
126
|
+
- `value`,数值,单位默认为`ms`
|
|
127
|
+
|
|
128
|
+
```js
|
|
129
|
+
// 300ms后触发回调
|
|
130
|
+
uni.$uv.sleep(300).then(() => {
|
|
131
|
+
console.log('定时结束')
|
|
132
|
+
})
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
### $parent.call(instance [, name])
|
|
137
|
+
|
|
138
|
+
用于抹平各端差异,在组件中向上获取父组件或者页面的实例。
|
|
139
|
+
|
|
140
|
+
- `instance`,实例,传`this`即可,不可修改
|
|
141
|
+
- `name`,可选,页面或者父组件的`name`属性值,不传则默认查找页面(最顶层)的实例
|
|
142
|
+
|
|
143
|
+
```vue
|
|
144
|
+
<!-- 页面内容 -->
|
|
145
|
+
<template>
|
|
146
|
+
<child></child>
|
|
147
|
+
</template>
|
|
148
|
+
|
|
149
|
+
<script setup>
|
|
150
|
+
defineOptions({
|
|
151
|
+
name: 'page'
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
</script>
|
|
155
|
+
|
|
156
|
+
<!-- 组件内容 -->
|
|
157
|
+
<script setup>
|
|
158
|
+
import { getCurrentInstance, onMounted } from 'vue';
|
|
159
|
+
|
|
160
|
+
const { proxy } = getCurrentInstance();
|
|
161
|
+
|
|
162
|
+
onMounted(() => {
|
|
163
|
+
// 将会得到父页面实例
|
|
164
|
+
uni.$uv.$parent.call(proxy, 'page');
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
</script>
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
### addStyle(style [, target = 'object'])
|
|
172
|
+
|
|
173
|
+
用于将`字符串`形式的内联样式样式转为`对象`形式,或者将`对象`形式的样式写法转为`字符串`形式。
|
|
174
|
+
|
|
175
|
+
- `style`,样式,可为对象或者字符串形式
|
|
176
|
+
- `target`,可选,转换结果的类型,默认为`object`;如果为`object`则返回对象形式的结果,如果为`string`则返回字符串形式的结果
|
|
177
|
+
|
|
178
|
+
```js
|
|
179
|
+
// 将会返回'padding: 10px; margin: 20px'
|
|
180
|
+
const style = { padding: '10px', margin: '20px' }
|
|
181
|
+
uni.$uv.addStyle(style, 'string')
|
|
182
|
+
|
|
183
|
+
// 将会返回{ padding: '10px', margin: '20px' }
|
|
184
|
+
const style = "padding: 10px; margin: 20px"
|
|
185
|
+
uni.$uv.addStyle(style)
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
### addUnit(value [, unit = 'px'])
|
|
190
|
+
|
|
191
|
+
用于给值加上单位,如果值已有单位,则直接原样返回,如果值为`数值`,则加上`unit`参数的单位。
|
|
192
|
+
|
|
193
|
+
- `value`,可为`5`,`5px`,`6rpx`,`100%`等格式的值
|
|
194
|
+
- `unit`,可选,默认为`px`,如果第一个参数为`数值`,则拼接上此单位
|
|
195
|
+
|
|
196
|
+
```js
|
|
197
|
+
// 返回5px
|
|
198
|
+
uni.$uv.addUnit(5)
|
|
199
|
+
uni.$uv.addUnit('5px')
|
|
200
|
+
|
|
201
|
+
// 返回5rpx
|
|
202
|
+
uni.$uv.addUnit(5, 'rpx')
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
### priceFormat(value [, decimals = 0 [, decimalPoint = '.' [, thousandsSeparator = ',']]])
|
|
207
|
+
|
|
208
|
+
此方法可用于对数值形式的金额进行格式化
|
|
209
|
+
|
|
210
|
+
- value,需要格式化的金额数值,只能为数值,如`300.52`,`300`,而不能为诸如带千分位的写法`3,000.5`
|
|
211
|
+
- decimals,可选,格式化后小数点的位数,默认为`0`,小数最后一位会进行四舍五入
|
|
212
|
+
- decimalPoint,可选,小数点的符号,默认为`.`
|
|
213
|
+
- thousandsSeparator,可选,千分位分隔符,默认为英文逗号`,`
|
|
214
|
+
|
|
215
|
+
```js
|
|
216
|
+
// 返回3,002.37
|
|
217
|
+
uni.$uv.priceFormat(3002.365, 2)
|
|
218
|
+
|
|
219
|
+
// 返回3,002
|
|
220
|
+
uni.$uv.priceFormat(3002.365)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
### page()
|
|
225
|
+
|
|
226
|
+
此方法用于获取当前页面的路径,返回的路径以`/`开头。
|
|
227
|
+
|
|
228
|
+
```js
|
|
229
|
+
// 返回类似/pages/example/components的结果
|
|
230
|
+
uni.$uv.page()
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### pages()
|
|
234
|
+
<!-- <badge text="2.0.22" /> -->
|
|
235
|
+
|
|
236
|
+
本方法为`getCurrentPages()`的封装,用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
|
|
237
|
+
|
|
238
|
+
```js
|
|
239
|
+
uni.$uv.pages()
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
<style scoped>
|
|
243
|
+
h4[id=各平台对应返回值如下表] + table thead tr th:nth-child(2){
|
|
244
|
+
width: 40%;
|
|
245
|
+
}
|
|
246
|
+
</style>
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
## dom获取节点布局信息 (nvue)
|
|
2
|
+
|
|
3
|
+
```vue
|
|
4
|
+
<script setup>
|
|
5
|
+
import { ref } from 'vue';
|
|
6
|
+
|
|
7
|
+
// #ifdef APP-NVUE
|
|
8
|
+
const dom = uni.requireNativePlugin('dom');
|
|
9
|
+
// #endif
|
|
10
|
+
|
|
11
|
+
const nodeRef = ref(null);
|
|
12
|
+
|
|
13
|
+
function queryRect() {
|
|
14
|
+
return new Promise(resolve => {
|
|
15
|
+
dom.getComponentRect(nodeRef.value, res => {
|
|
16
|
+
resolve(res.size);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
</script>
|
|
22
|
+
```
|
|
23
|
+
## getRect 获取节点布局信息 (vue)
|
|
24
|
+
|
|
25
|
+
此方法封装自uni的[nodesRef.boundingClientRect](https://uniapp.dcloud.io/api/ui/nodes-info?id=nodesrefboundingclientrect),它极大简化了
|
|
26
|
+
使用复杂度,内部使用`Promise`,可以让用户同步获取节点信息。
|
|
27
|
+
|
|
28
|
+
### getRect(selector, all = false)
|
|
29
|
+
|
|
30
|
+
- `selector` <String\> 此参数为元素节点,可以是`id`或者`class`,比如"#user-name",".box"
|
|
31
|
+
- `all` <Boolean\> 是否返回全部节点信息,当页面有多个相同`selector`的元素时,`all`为`true`,会以数组形式返回所有节点的信息(结果为数组,数组元素为对象),否则只返回第一个节点的信息(结果为一个对象)
|
|
32
|
+
|
|
33
|
+
注意:该方法返回的结果,共有如下有用信息:
|
|
34
|
+
|
|
35
|
+
```js
|
|
36
|
+
res = {
|
|
37
|
+
left: 0,
|
|
38
|
+
right: 414,
|
|
39
|
+
top: 323,
|
|
40
|
+
height: 2597,
|
|
41
|
+
bottom: 2920,
|
|
42
|
+
width: 414
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
受限于`nodesRef.boundingClientRect`,其上结果中的`left`,`top`,`right`,`bottom`,是会随着页面滚动而变化的,因为这个查询的相对于屏幕窗口,而不是
|
|
47
|
+
相对于页面根元素的,但`width`,`height`,是恒定不变的,所以一般情况我们推荐您想要获取节点宽高的时候采用这个方法。
|
|
48
|
+
|
|
49
|
+
:::warning 注意
|
|
50
|
+
由于`onLoad`生命周期元素尚未创建完成,请勿在此生命周期使用此方法,如果是页面,应该在`onReady`生命周期,组件内应该在`mounted`生命周期调用。
|
|
51
|
+
如果要查询的目标,是通过服务端获取数据后才渲染的,那么应该在获取数据后,通过 Vue 3 的 `nextTick` 调用此方法。
|
|
52
|
+
:::
|
|
53
|
+
|
|
54
|
+
### 异步使用方法
|
|
55
|
+
|
|
56
|
+
通过`then`调用即可
|
|
57
|
+
|
|
58
|
+
```vue
|
|
59
|
+
<script setup>
|
|
60
|
+
import { getCurrentInstance } from 'vue';
|
|
61
|
+
|
|
62
|
+
const { proxy } = getCurrentInstance();
|
|
63
|
+
|
|
64
|
+
function getElInfo() {
|
|
65
|
+
proxy.$uv.getRect('.user-avatar').then(res => {
|
|
66
|
+
console.log(res);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
</script>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
### 同步使用方法
|
|
75
|
+
|
|
76
|
+
该方法的使用场景为您下一步的操作需要获取元素的节点后才能进行的情况,可以通过`async/await`方式调用,注意,无论是生命周期还是`methods`中的方法,都可以在
|
|
77
|
+
其前面添加`async`修饰符
|
|
78
|
+
|
|
79
|
+
```vue
|
|
80
|
+
<script setup>
|
|
81
|
+
import { getCurrentInstance } from 'vue';
|
|
82
|
+
|
|
83
|
+
const { proxy } = getCurrentInstance();
|
|
84
|
+
|
|
85
|
+
async function getElInfo() {
|
|
86
|
+
const rectInfo = await proxy.$uv.getRect('.user-avatar');
|
|
87
|
+
console.log(rectInfo);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
</script>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 在 Vue 3 `<script setup>` 中使用方法
|
|
94
|
+
|
|
95
|
+
```vue
|
|
96
|
+
<script setup>
|
|
97
|
+
import { onReady } from '@dcloudio/uni-app';
|
|
98
|
+
import { getCurrentInstance } from 'vue';
|
|
99
|
+
const { proxy } = getCurrentInstance();
|
|
100
|
+
onReady(()=>{
|
|
101
|
+
proxy.$uv.getRect('.demo').then(res=>{
|
|
102
|
+
console.log(res)
|
|
103
|
+
})
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
</script>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 请求数据后再获取节点信息
|
|
110
|
+
|
|
111
|
+
此场景为元素内容为后端获取数据填充的,节点填充数据前后,元素的大小尺寸是不一样的,所以需要在获取后再执行此方法,这里通过 `nextTick` 调用,
|
|
112
|
+
是因为它会等待数据赋值,元素创建完成后再执行,此时才是准确的尺寸,以下演示,为uv-ui自带的[http 请求](/api/request/http.html)方法调用
|
|
113
|
+
|
|
114
|
+
```html
|
|
115
|
+
<template>
|
|
116
|
+
<view>
|
|
117
|
+
<view class="user-name">
|
|
118
|
+
{{userName}}
|
|
119
|
+
</view>
|
|
120
|
+
</view>
|
|
121
|
+
</template>
|
|
122
|
+
|
|
123
|
+
<script setup>
|
|
124
|
+
import { getCurrentInstance, nextTick, ref } from 'vue';
|
|
125
|
+
import { onLoad } from '@dcloudio/uni-app';
|
|
126
|
+
|
|
127
|
+
const { proxy } = getCurrentInstance();
|
|
128
|
+
const userName = ref('');
|
|
129
|
+
|
|
130
|
+
function getElInfo() {
|
|
131
|
+
uni.$uv.http.post('http://www.example.com/user/info').then(async res => {
|
|
132
|
+
userName.value = res.name;
|
|
133
|
+
await nextTick();
|
|
134
|
+
const rect = await proxy.$uv.getRect('.user-avatar');
|
|
135
|
+
console.log(rect);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
onLoad(() => {
|
|
140
|
+
getElInfo();
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
</script>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 获取全部节点信息
|
|
147
|
+
|
|
148
|
+
设置第二个参数为`true`,此场景为页面有多个相同类名的元素,需要获取所有同类名节点信息时候使用,返回结果为一个数组
|
|
149
|
+
|
|
150
|
+
```html
|
|
151
|
+
<template>
|
|
152
|
+
<view>
|
|
153
|
+
<view class="item">
|
|
154
|
+
uv-ui
|
|
155
|
+
</view>
|
|
156
|
+
<view class="item">
|
|
157
|
+
<view>红豆生南国,春来发几枝</view>
|
|
158
|
+
<view>愿君多采撷,此物最相思</view>
|
|
159
|
+
</view>
|
|
160
|
+
</view>
|
|
161
|
+
</template>
|
|
162
|
+
|
|
163
|
+
<script setup>
|
|
164
|
+
import { getCurrentInstance } from 'vue';
|
|
165
|
+
import { onReady } from '@dcloudio/uni-app';
|
|
166
|
+
|
|
167
|
+
const { proxy } = getCurrentInstance();
|
|
168
|
+
|
|
169
|
+
function getElInfo() {
|
|
170
|
+
proxy.$uv.getRect('.item', true).then(rect => {
|
|
171
|
+
// rect为一个数组(内有2个元素),因为页面有2个.item节点
|
|
172
|
+
console.log(rect);
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
onReady(() => {
|
|
177
|
+
getElInfo();
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
</script>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
### 如何让让某个元素滚动到页面顶部
|
|
185
|
+
|
|
186
|
+
这里说的顶部,指的是导航栏的下方,比如我们点击某个操作,页面自动滚动,指定元素位于导航栏下方时停止。
|
|
187
|
+
我们需要结合`onPageScroll`生命周期,获得实时的页面滚动条位置。
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
```html
|
|
191
|
+
<template>
|
|
192
|
+
<view class="wrap">
|
|
193
|
+
<view class="item">
|
|
194
|
+
uv-ui
|
|
195
|
+
</view>
|
|
196
|
+
<view class="item">
|
|
197
|
+
uv-ui
|
|
198
|
+
</view>
|
|
199
|
+
<view class="item">
|
|
200
|
+
uv-ui
|
|
201
|
+
</view>
|
|
202
|
+
<view class="item">
|
|
203
|
+
uv-ui
|
|
204
|
+
</view>
|
|
205
|
+
<view class="item object-item" @tap="scrollEl">
|
|
206
|
+
点我,我就会滚动到导航栏下方
|
|
207
|
+
</view>
|
|
208
|
+
</view>
|
|
209
|
+
</template>
|
|
210
|
+
|
|
211
|
+
<script setup>
|
|
212
|
+
import { getCurrentInstance, ref } from 'vue';
|
|
213
|
+
import { onPageScroll } from '@dcloudio/uni-app';
|
|
214
|
+
|
|
215
|
+
const { proxy } = getCurrentInstance();
|
|
216
|
+
const scrollTop = ref(0);
|
|
217
|
+
|
|
218
|
+
onPageScroll(e => {
|
|
219
|
+
scrollTop.value = e.scrollTop;
|
|
220
|
+
});
|
|
221
|
+
|
|
222
|
+
function scrollEl() {
|
|
223
|
+
proxy.$uv.getRect('.object-item').then(res => {
|
|
224
|
+
uni.pageScrollTo({
|
|
225
|
+
scrollTop: scrollTop.value + res.top,
|
|
226
|
+
duration: 0
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
</script>
|
|
232
|
+
|
|
233
|
+
<style lang="scss" scoped>
|
|
234
|
+
.wrap {
|
|
235
|
+
height: 200vh;
|
|
236
|
+
}
|
|
237
|
+
</style>
|
|
238
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
## guid 全局唯一标识符
|
|
2
|
+
|
|
3
|
+
### 按需引入
|
|
4
|
+
|
|
5
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入:
|
|
6
|
+
|
|
7
|
+
```js
|
|
8
|
+
// 引入
|
|
9
|
+
import { guid } from '@gmcb/uv-ui/libs/function/index.js';
|
|
10
|
+
// 调用
|
|
11
|
+
guid(...);
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### guid(length = 32, firstU = true, radix = 62)
|
|
15
|
+
|
|
16
|
+
该函数可以生产一个全局唯一、随机的guid,默认首字母为`u`,可以用于当做元素的id或者class名等需要唯一,随机字符串的地方,因为id或者class不能以数字开头。
|
|
17
|
+
|
|
18
|
+
- `length` <Number | null\> guid的长度,默认为`32`,如果取值`null`,则按`rfc4122标准`生成对应格式的随机数
|
|
19
|
+
- `firstU` <Boolean\> 首字母是否为"u",如果首字母为数字情况下,不能用作元素的`id`或者`class`,默认为`true`
|
|
20
|
+
- `radix` <Number\> 生成的基数,默认为`62`,用于生成随机数字符串为"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
|
|
21
|
+
如果取2,那么返回的结果就是前两位0和1(可以理解为二进制)的随机结果,如果为7,返回的字符串就是0-7(理解为八进制)之间,
|
|
22
|
+
10为十进制,以此类推。
|
|
23
|
+
|
|
24
|
+
**说明**:这个方法三个参数都有默认的值,所以您调用的时候,可以无需传递任何参数也是可以的,并且**建议您这样做**。
|
|
25
|
+
|
|
26
|
+
```vue
|
|
27
|
+
<template>
|
|
28
|
+
<view :class="className"></view>
|
|
29
|
+
</template>
|
|
30
|
+
<script setup>
|
|
31
|
+
import { computed } from "vue";
|
|
32
|
+
import { onLoad } from "@dcloudio/uni-app";
|
|
33
|
+
const className = computed(() => {
|
|
34
|
+
return uni.$uv.guid(20);
|
|
35
|
+
});
|
|
36
|
+
onLoad(() => {
|
|
37
|
+
console.log(uni.$uv.guid());
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
</script>
|
|
41
|
+
```
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 工具
|
|
2
|
+
|
|
3
|
+
`@gmcb/uv-ui` 的工具能力会在插件注册后挂载到 `uni.$uv`,也可以从 `@gmcb/uv-ui/libs` 深度按需引用。
|
|
4
|
+
|
|
5
|
+
## 使用方式
|
|
6
|
+
|
|
7
|
+
全局使用:
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
uni.$uv.trim(' abc ');
|
|
11
|
+
uni.$uv.timeFormat(Date.now(), 'yyyy-mm-dd');
|
|
12
|
+
uni.$uv.route('/pages/index/index');
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
按需引用:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { trim } from '@gmcb/uv-ui/libs/function/test.js';
|
|
19
|
+
import { timeFormat } from '@gmcb/uv-ui/libs/function/index.js';
|
|
20
|
+
import route from '@gmcb/uv-ui/libs/utils/route.js';
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 工具分类
|
|
24
|
+
|
|
25
|
+
| 文档 | 说明 |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| [全局使用](./intro.md) | `uni.$uv` 和按需引用说明。 |
|
|
28
|
+
| [快速使用](./fastUse.md) | 平台、系统和常用快捷方法。 |
|
|
29
|
+
| [路由](./route.md) | `uni.$uv.route` 路由跳转。 |
|
|
30
|
+
| [queryParams](./queryParams.md) | 对象转 URL 参数。 |
|
|
31
|
+
| [时间](./time.md) | 时间格式化和相对时间。 |
|
|
32
|
+
| [防抖节流](./debounce.md) | `debounce` 和 `throttle`。 |
|
|
33
|
+
| [校验](./test.md) | 常用校验规则。 |
|
|
34
|
+
| [对象](./object.md) | 深拷贝、深合并和属性读取。 |
|
|
35
|
+
| [随机数](./random.md) | 随机数。 |
|
|
36
|
+
| [随机数组](./randomArray.md) | 数组乱序。 |
|
|
37
|
+
| [guid](./guid.md) | 唯一 ID。 |
|
|
38
|
+
| [trim](./trim.md) | 去除空格。 |
|
|
39
|
+
| [颜色转换](./colorSwitch.md) | 颜色渐变、HEX/RGB 转换。 |
|
|
40
|
+
| [节点布局](./getRect.md) | 获取节点尺寸和位置。 |
|
|
41
|
+
|
|
42
|
+
## 相关 API
|
|
43
|
+
|
|
44
|
+
| 文档 | 说明 |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| [HTTP 请求](../request/http.md) | `uni.$uv.http` 请求实例和拦截器。 |
|
|
47
|
+
| [API 集中管理](../request/apiManage.md) | 请求 API 统一管理方式。 |
|
|
48
|
+
| [颜色值](../configs/color.md) | 内置颜色配置。 |
|
|
49
|
+
| [小程序分享](../mixins/mpShare.md) | 小程序分享 mixin。 |
|
|
50
|
+
|
|
51
|
+
## 路径约定
|
|
52
|
+
|
|
53
|
+
- 文档目录为 `docs/api/utils`。
|
|
54
|
+
- 站点路径归入 `/api/*/*.html`。
|
|
55
|
+
- 历史工具分类路径不再作为本包文档入口。
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# 全局使用,请按照[扩展配置](https://www.uvui.cn/components/setting.html)进行配置后即可正常使用。
|
|
2
|
+
|
|
3
|
+
### 全局使用
|
|
4
|
+
|
|
5
|
+
此js函数方法,为uv-ui框架提供的一部分功能,它的实现,需要通过js调用,而不是组件的形式。
|
|
6
|
+
|
|
7
|
+
工具库中的所有方法,如果按照[扩展配置](/components/setting.html)进行配置后,均挂载在`$uv`对象下,调用方法如下:
|
|
8
|
+
|
|
9
|
+
示例:
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
console.log(uni.$uv.trim(' abc ')); // 去除两端空格
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### 按需使用
|
|
16
|
+
|
|
17
|
+
如果未做全局[扩展配置](https://www.uvui.cn/components/setting.html),可以按需引入,具体引入路径等请到具体API中查看:
|
|
18
|
+
|
|
19
|
+
示例:
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
import { trim } from '@gmcb/uv-ui/libs/function/test.js';
|
|
23
|
+
// 使用
|
|
24
|
+
console.log(trim('你好 '))
|
|
25
|
+
```
|