|
@@ -1,61 +0,0 @@
|
1
|
|
-import Taro from '@tarojs/taro';
|
2
|
|
-import { Picker, View } from '@tarojs/components';
|
3
|
|
-import { useMemo, useState } from 'react';
|
4
|
|
-import PropTypes from 'prop-types';
|
5
|
|
-
|
6
|
|
-// 暂时只支持单列普通选择器
|
7
|
|
-const XPicker = (props) => {
|
8
|
|
- const { bindchange, onChange, range, value : propValue, rangeKey, rangeValue, placeholder = '请选择', ...leftProps } = props
|
9
|
|
-
|
10
|
|
- const [innerValue, setInnerValue] = useState()
|
11
|
|
-
|
12
|
|
- const handleChange = (e) => {
|
13
|
|
- const data = range[e.detail.value]
|
14
|
|
- const val = data[rangeValue]
|
15
|
|
- e.detail.value = val
|
16
|
|
- setInnerValue(data)
|
17
|
|
-
|
18
|
|
- console.log('-----bindchange----->', bindchange)
|
19
|
|
- console.log('-----onChange----->', onChange)
|
20
|
|
-
|
21
|
|
- if (bindchange) {
|
22
|
|
- bindchange(e, data)
|
23
|
|
- }
|
24
|
|
- if (onChange) {
|
25
|
|
- onChange(e, data)
|
26
|
|
- }
|
27
|
|
- }
|
28
|
|
-
|
29
|
|
- const value = useMemo(() => {
|
30
|
|
- if (propValue === undefined || propValue === null) {
|
31
|
|
- return undefined
|
32
|
|
- }
|
33
|
|
-
|
34
|
|
- for (let i in range) {
|
35
|
|
- if (range[i][rangeValue] === propValue) {
|
36
|
|
- setInnerValue(range[i])
|
37
|
|
- return i;
|
38
|
|
- }
|
39
|
|
- }
|
40
|
|
-
|
41
|
|
- return undefined;
|
42
|
|
- }, [propValue, range, rangeValue])
|
43
|
|
-
|
44
|
|
- const childViewStyle = useMemo(() => {
|
45
|
|
- return innerValue ? {} : { color: '#858585' }
|
46
|
|
- }, [innerValue])
|
47
|
|
-
|
48
|
|
- return (
|
49
|
|
- <Picker {...leftProps} mode='selector' range={range} value={value} rangeKey={rangeKey} onChange={handleChange}>
|
50
|
|
- <View style={childViewStyle}>{innerValue === undefined ? placeholder : innerValue[rangeKey]}</View>
|
51
|
|
- </Picker>
|
52
|
|
- )
|
53
|
|
-}
|
54
|
|
-
|
55
|
|
-XPicker.behaviors = ['wx://form-field']
|
56
|
|
-XPicker.propTypes = {
|
57
|
|
- behaviors: PropTypes.array
|
58
|
|
-}
|
59
|
|
-
|
60
|
|
-
|
61
|
|
-export default XPicker
|