@tarojs/components-rn 3.6.22-nightly.5 → 3.6.22-nightly.6

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.
@@ -15,8 +15,9 @@
15
15
  */
16
16
  import * as React from 'react';
17
17
  import { Image, StyleSheet } from 'react-native';
18
- import { noop, omit } from '../../utils';
19
- import ClickableSimplified from '../ClickableSimplified';
18
+ import { omit } from '../../utils';
19
+ import { useCallback, useEffect, useRef, useState } from 'react';
20
+ import useClickable from '../hooks/useClickable';
20
21
  // fix: https://github.com/facebook/metro/issues/836
21
22
  // 保证 react-native-svg 是最后一个依赖
22
23
  const omitProp = (props) => {
@@ -39,147 +40,123 @@ try {
39
40
  WithLocalSvg = svg.WithLocalSvg;
40
41
  }
41
42
  catch (e) { }
42
- export class _Image extends React.Component {
43
- constructor() {
44
- super(...arguments);
45
- this.hasLayout = false;
46
- this.state = {
47
- ratio: 0,
48
- layoutWidth: 0
49
- };
50
- this.onError = () => {
51
- const { onError = noop } = this.props;
52
- onError({
53
- detail: { errMsg: 'something wrong' }
54
- });
55
- };
56
- this.onLoad = () => {
57
- const { src, onLoad } = this.props;
58
- if (!onLoad)
59
- return;
60
- if (typeof src === 'string') {
61
- Image.getSize(src, (width, height) => {
62
- onLoad({
63
- detail: { width, height }
64
- });
65
- }, () => {
66
- onLoad({
67
- detail: { width: 0, height: 0 }
68
- });
69
- });
70
- }
71
- else {
72
- const iras = Image.resolveAssetSource(typeof src === 'string' ? { uri: src } : src);
73
- const { width, height } = iras || { width: 0, height: 0 };
43
+ const _Image = (props = {
44
+ src: '',
45
+ mode: 'scaleToFill'
46
+ }) => {
47
+ const ref = useRef({
48
+ hasLayout: false
49
+ });
50
+ const [ratio, setRatio] = useState(0);
51
+ const [layoutWidth, setLayoutWidth] = useState(0);
52
+ const newProps = useClickable(props);
53
+ const { style, src, mode = 'scaleToFill', svg = false, onLoad, onError } = newProps;
54
+ const _onError = useCallback(() => {
55
+ if (!onError)
56
+ return;
57
+ onError({
58
+ detail: { errMsg: 'something wrong' }
59
+ });
60
+ }, [onError]);
61
+ const _onLoad = useCallback(() => {
62
+ if (!onLoad)
63
+ return;
64
+ if (typeof src === 'string') {
65
+ Image.getSize(src, (width, height) => {
74
66
  onLoad({
75
67
  detail: { width, height }
76
68
  });
77
- }
78
- };
79
- this.onLayout = (event) => {
80
- const { mode, style } = this.props;
81
- const { width: layoutWidth } = event.nativeEvent.layout;
82
- const flattenStyle = StyleSheet.flatten(style) || {};
83
- if (mode === 'widthFix' && typeof flattenStyle.width === 'string') {
84
- if (this.hasLayout)
85
- return;
86
- this.setState({
87
- layoutWidth
88
- });
89
- }
90
- if (this.state.ratio) {
91
- this.hasLayout = true;
92
- }
93
- };
94
- this.loadImg = (props) => {
95
- const { mode, src } = props;
96
- if (mode !== 'widthFix')
97
- return;
98
- if (typeof src === 'string') {
99
- Image.getSize(props.src, (width, height) => {
100
- if (this.hasLayout)
101
- return;
102
- this.setState({
103
- ratio: height / width
104
- });
105
- });
106
- }
107
- else {
108
- const source = typeof props.src === 'string' ? { uri: props.src } : props.src;
109
- const { width, height } = Image.resolveAssetSource(source) || {};
110
- if (this.hasLayout && !!this.state.ratio)
111
- return;
112
- this.setState({
113
- ratio: height / width
69
+ }, () => {
70
+ onLoad({
71
+ detail: { width: 0, height: 0 }
114
72
  });
115
- }
116
- };
117
- }
118
- componentDidMount() {
119
- this.loadImg(this.props);
120
- }
121
- shouldComponentUpdate(nextProps) {
122
- if (nextProps.src !== this.props.src) {
123
- this.hasLayout = false;
73
+ });
124
74
  }
125
- return true;
126
- }
127
- componentDidUpdate(prevProps) {
128
- if (prevProps.src !== this.props.src) {
129
- this.loadImg(this.props);
75
+ else {
76
+ const iras = Image.resolveAssetSource(typeof src === 'string' ? { uri: src } : src);
77
+ const { width, height } = iras || { width: 0, height: 0 };
78
+ onLoad({
79
+ detail: { width, height }
80
+ });
130
81
  }
131
- }
132
- render() {
133
- const { style, src, mode = 'scaleToFill', svg = false } = this.props;
82
+ }, [onLoad]);
83
+ const onLayout = (event) => {
84
+ const { width: layoutWidth } = event.nativeEvent.layout;
134
85
  const flattenStyle = StyleSheet.flatten(style) || {};
135
- const defaultWidth = flattenStyle.width || 300;
136
- const defaultHeight = flattenStyle.height || 225;
137
- // remote svg image support, svg 图片暂不支持 mode
138
- const remoteSvgReg = /(https?:\/\/.*\.(?:svg|svgx))/i;
139
- if (SvgCssUri && typeof src === 'string' && remoteSvgReg.test(src)) {
140
- return (React.createElement(SvgCssUri, { uri: src, width: defaultWidth, height: defaultHeight }));
86
+ if (mode === 'widthFix' && typeof flattenStyle.width === 'string') {
87
+ if (ref.current.hasLayout)
88
+ return;
89
+ setLayoutWidth(layoutWidth);
141
90
  }
142
- // The parameter passed to require mpxTransformust be a string literal
143
- const source = typeof src === 'string' ? { uri: src } : src;
144
- // local svg image support, svg 图片暂不支持 mode
145
- if (WithLocalSvg && svg) {
146
- return (React.createElement(WithLocalSvg, { asset: source, width: defaultWidth, height: defaultHeight }));
91
+ if (ratio) {
92
+ ref.current.hasLayout = true;
93
+ }
94
+ };
95
+ const loadImg = useCallback((props) => {
96
+ if (mode !== 'widthFix')
97
+ return;
98
+ if (typeof src === 'string') {
99
+ Image.getSize(props.src, (width, height) => {
100
+ if (ref.current.hasLayout)
101
+ return;
102
+ setRatio(height / width);
103
+ });
104
+ }
105
+ else {
106
+ const source = typeof props.src === 'string' ? { uri: props.src } : props.src;
107
+ const { width, height } = Image.resolveAssetSource(source) || {};
108
+ if (ref.current.hasLayout && !!ratio)
109
+ return;
110
+ setRatio(height / width);
147
111
  }
148
- const isWidthFix = mode === 'widthFix';
149
- const rMode = (resizeModeMap[mode] || (isWidthFix ? undefined : 'stretch'));
150
- const imageHeight = (() => {
151
- if (isWidthFix) {
152
- if (typeof flattenStyle.width === 'string') {
153
- return this.state.layoutWidth * this.state.ratio;
154
- }
155
- else if (typeof flattenStyle.width === 'number') {
156
- return flattenStyle.width * this.state.ratio;
157
- }
158
- else {
159
- return 300 * this.state.ratio;
160
- }
112
+ }, [mode, src, ref]);
113
+ useEffect(() => {
114
+ ref.current.hasLayout = false;
115
+ loadImg(props);
116
+ }, [props.src, ref]);
117
+ const flattenStyle = StyleSheet.flatten(style) || {};
118
+ const defaultWidth = flattenStyle.width || 300;
119
+ const defaultHeight = flattenStyle.height || 225;
120
+ // remote svg image support, svg 图片暂不支持 mode
121
+ const remoteSvgReg = /(https?:\/\/.*\.(?:svg|svgx))/i;
122
+ if (SvgCssUri && typeof src === 'string' && remoteSvgReg.test(src)) {
123
+ return (React.createElement(SvgCssUri, { uri: src, width: defaultWidth, height: defaultHeight }));
124
+ }
125
+ // The parameter passed to require mpxTransformust be a string literal
126
+ const source = typeof src === 'string' ? { uri: src } : src;
127
+ // local svg image support, svg 图片暂不支持 mode
128
+ if (WithLocalSvg && svg) {
129
+ return (React.createElement(WithLocalSvg, { asset: source, width: defaultWidth, height: defaultHeight }));
130
+ }
131
+ const isWidthFix = mode === 'widthFix';
132
+ const rMode = (resizeModeMap[mode] || (isWidthFix ? undefined : 'stretch'));
133
+ const imageHeight = (() => {
134
+ if (isWidthFix) {
135
+ if (typeof flattenStyle.width === 'string') {
136
+ return layoutWidth * ratio;
137
+ }
138
+ else if (typeof flattenStyle.width === 'number') {
139
+ return flattenStyle.width * ratio;
161
140
  }
162
141
  else {
163
- return defaultHeight;
142
+ return 300 * ratio;
164
143
  }
165
- })();
166
- const restImageProps = omitProp(this.props);
167
- return (React.createElement(Image, Object.assign({ testID: 'image', source: source, resizeMode: rMode, onError: this.onError, onLoad: this.onLoad, onLayout: this.onLayout, style: [
168
- {
169
- width: 300
170
- },
171
- style,
172
- {
173
- height: imageHeight
174
- }
175
- ] }, restImageProps)));
176
- }
177
- }
178
- _Image.defaultProps = {
179
- src: '',
180
- mode: 'scaleToFill'
144
+ }
145
+ else {
146
+ return defaultHeight;
147
+ }
148
+ })();
149
+ const restImageProps = omitProp(newProps);
150
+ return (React.createElement(Image, Object.assign({ testID: 'image', source: source, resizeMode: rMode, onError: _onError, onLoad: _onLoad, onLayout: onLayout, style: [
151
+ {
152
+ width: 300
153
+ },
154
+ style,
155
+ {
156
+ height: imageHeight
157
+ }
158
+ ] }, restImageProps)));
181
159
  };
182
- // export { _Image }
183
- export default ClickableSimplified(_Image);
184
- // export default _Image
160
+ export { _Image };
161
+ export default _Image;
185
162
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Image/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Image/index.tsx"],"names":[],"mappings":"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"}
@@ -7,19 +7,40 @@
7
7
  import * as React from 'react';
8
8
  import { View, Text, } from 'react-native';
9
9
  import { extracteTextStyle, omit } from '../../utils';
10
- import ClickableSimplified, { clickableHandlers } from '../ClickableSimplified';
10
+ import useClickable, { clickableHandlers } from '../hooks/useClickable';
11
11
  const stringToText = (child, props) => {
12
12
  // TODO: 实现小程序中效果
13
- return (typeof child === 'string' || typeof child === 'number')
14
- ? React.createElement(Text, Object.assign({}, omit(props, clickableHandlers)), child) : child;
13
+ if (typeof child === 'string' || typeof child === 'number') {
14
+ // textNode节点
15
+ return React.createElement(Text, Object.assign({}, omit(props, clickableHandlers)), child);
16
+ }
17
+ return child;
18
+ };
19
+ // 兼容View中没用Text包裹的文字 防止报错 直接继承props在安卓中文字会消失???
20
+ const renderChildren = (children, props) => {
21
+ let textStyle = null;
22
+ if (Array.isArray(children)) {
23
+ return children.map((child, i) => {
24
+ if ((typeof child === 'string' || typeof child === 'number') && !textStyle) {
25
+ // 存在textNode,解析textStyle
26
+ textStyle = extracteTextStyle(props.style);
27
+ }
28
+ return stringToText(child, Object.assign(Object.assign({ key: i }, props), { style: textStyle }));
29
+ });
30
+ }
31
+ else {
32
+ if ((typeof children === 'string' || typeof children === 'number') && !textStyle) {
33
+ // 存在textNode,解析textStyle
34
+ textStyle = extracteTextStyle(props.style);
35
+ }
36
+ return stringToText(children, Object.assign(Object.assign({}, props), { style: textStyle }));
37
+ }
15
38
  };
16
39
  const _View = React.forwardRef((props, ref) => {
17
- const textStyle = extracteTextStyle(props.style);
18
- // 兼容View中没用Text包裹的文字 防止报错 直接继承props在安卓中文字会消失???
19
- const child = Array.isArray(props.children) ? props.children.map((c, i) => stringToText(c, Object.assign(Object.assign({ key: i }, props), { style: textStyle }))) : stringToText(props.children, Object.assign(Object.assign({}, props), { style: textStyle }));
20
- return (React.createElement(View, Object.assign({ ref: ref, style: props.style }, props), child));
40
+ const clickable = useClickable(props); // 性能优化:从HOC替换成hooks,减少一层组件实例
41
+ return (React.createElement(View, Object.assign({ ref: ref }, clickable), renderChildren(props.children, props)));
21
42
  });
22
43
  _View.displayName = '_View';
23
44
  export { _View };
24
- export default ClickableSimplified(_View);
45
+ export default _View;
25
46
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/View/index.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,IAAI,EACJ,IAAI,GACL,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,mBAAmB,EAAE,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG/E,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,KAAU,EAAE,EAAE;IAC9C,iBAAiB;IACjB,OAAO,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QAC7D,CAAC,CAAC,oBAAC,IAAI,oBAAK,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;AACtE,CAAC,CAAA;AAED,MAAM,KAAK,GAA2E,KAAK,CAAC,UAAU,CAAC,CAAC,KAAiB,EAAE,GAA4B,EAAE,EAAE;IACzJ,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAChD,gDAAgD;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,gCAAI,GAAG,EAAE,CAAC,IAAK,KAAK,KAAE,KAAK,EAAE,SAAS,IAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,kCAAO,KAAK,KAAE,KAAK,EAAE,SAAS,IAAG,CAAA;IAC/M,OAAO,CACL,oBAAC,IAAI,kBACH,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,CAAC,KAAK,IACd,KAAK,GAER,KAAK,CACD,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,eAAe,mBAAmB,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/View/index.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EACL,IAAI,EACJ,IAAI,GAGL,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAErD,OAAO,YAAY,EAAE,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGvE,MAAM,YAAY,GAAG,CAAC,KAAU,EAAE,KAAU,EAAE,EAAE;IAC9C,iBAAiB;IACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC1D,aAAa;QACb,OAAO,oBAAC,IAAI,oBAAK,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAQ,CAAA;KAChE;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,gDAAgD;AAChD,MAAM,cAAc,GAAG,CAAC,QAAyB,EAAE,KAAU,EAAE,EAAE;IAC/D,IAAI,SAAS,GAAgC,IAAI,CAAA;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;gBAC5E,yBAAyB;gBACvB,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;aAC3C;YACD,OAAO,YAAY,CAAC,KAAK,gCAAI,GAAG,EAAE,CAAC,IAAK,KAAK,KAAE,KAAK,EAAE,SAAS,IAAG,CAAA;QACpE,CAAC,CAAC,CAAA;KACH;SAAM;QACL,IAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE;YAChF,yBAAyB;YACzB,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SAC3C;QACD,OAAO,YAAY,CAAC,QAAQ,kCAAO,KAAK,KAAE,KAAK,EAAE,SAAS,IAAG,CAAA;KAC9D;AACH,CAAC,CAAA;AAED,MAAM,KAAK,GAA4F,KAAK,CAAC,UAAU,CAAC,CAAC,KAAkC,EAAE,GAA4B,EAAE,EAAE;IAC3L,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA,CAAC,6BAA6B;IACnE,OAAO,CACL,oBAAC,IAAI,kBACH,GAAG,EAAE,GAAG,IACJ,SAAS,GAEZ,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CACjC,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,eAAe,KAAK,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PropsType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PropsType.js","sourceRoot":"","sources":["../../../src/components/hooks/PropsType.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,154 @@
1
+ import { useEffect, useRef, useState } from 'react';
2
+ import { PanResponder } from 'react-native';
3
+ import { omit } from '../../utils';
4
+ export const clickableHandlers = [
5
+ 'onStartShouldSetResponder',
6
+ 'onMoveShouldSetResponder',
7
+ 'onResponderEnd',
8
+ 'onResponderGrant',
9
+ 'onResponderReject',
10
+ 'onResponderMove',
11
+ 'onResponderRelease',
12
+ 'onResponderStart',
13
+ 'onResponderStart',
14
+ 'onResponderTerminationRequest',
15
+ 'onResponderTerminate',
16
+ 'onMoveShouldSetResponderCapture',
17
+ ];
18
+ const getWxAppEvent = (event) => {
19
+ const nativeEvent = event.nativeEvent;
20
+ const { timestamp, target, pageX, pageY, touches = [], changedTouches = [] } = nativeEvent;
21
+ return {
22
+ type: 'tap',
23
+ timeStamp: timestamp,
24
+ target: {
25
+ id: target,
26
+ dataset: {}
27
+ },
28
+ currentTarget: {
29
+ id: target,
30
+ dataset: {}
31
+ },
32
+ detail: {
33
+ x: pageX,
34
+ y: pageY
35
+ },
36
+ touches: touches.map((item) => {
37
+ return {
38
+ identifier: item.identifier,
39
+ pageX: item.pageX,
40
+ pageY: item.pageY,
41
+ clientX: item.locationX,
42
+ clientY: item.locationY
43
+ };
44
+ }),
45
+ changedTouches: changedTouches.map((item) => {
46
+ return {
47
+ identifier: item.identifier,
48
+ pageX: item.pageX,
49
+ pageY: item.pageY,
50
+ clientX: item.locationX,
51
+ clientY: item.locationY
52
+ };
53
+ })
54
+ };
55
+ };
56
+ const useClickable = (props) => {
57
+ const { style, hoverStyle,
58
+ // hoverStopPropagation,
59
+ onClick, onLongPress, onTouchStart,
60
+ // onTouchMove,
61
+ // onTouchCancel,
62
+ onTouchEnd, } = props;
63
+ if (!hoverStyle &&
64
+ // !hoverStopPropagation &&
65
+ !onClick &&
66
+ !onLongPress &&
67
+ !onTouchStart &&
68
+ // !onTouchMove &&
69
+ // !onTouchCancel &&
70
+ !onTouchEnd) {
71
+ return props;
72
+ }
73
+ const [isHover, setIsHover] = useState(false);
74
+ const ref = useRef({
75
+ startTimestamp: 0
76
+ });
77
+ useEffect(() => {
78
+ return () => {
79
+ ref.current.startTimer && clearTimeout(ref.current.startTimer);
80
+ ref.current.stayTimer && clearTimeout(ref.current.stayTimer);
81
+ };
82
+ }, [ref]);
83
+ const setStartTimer = () => {
84
+ const { hoverStyle, hoverStartTime } = props;
85
+ if (hoverStyle) {
86
+ ref.current.startTimer && clearTimeout(ref.current.startTimer);
87
+ ref.current.startTimer = setTimeout(() => {
88
+ setIsHover(true);
89
+ }, hoverStartTime);
90
+ }
91
+ };
92
+ const setStayTimer = () => {
93
+ const { hoverStyle, hoverStayTime } = props;
94
+ if (hoverStyle) {
95
+ ref.current.stayTimer && clearTimeout(ref.current.stayTimer);
96
+ ref.current.stayTimer = setTimeout(() => {
97
+ isHover && setIsHover(false);
98
+ }, hoverStayTime);
99
+ }
100
+ };
101
+ const panResponder = useRef(PanResponder.create({
102
+ onStartShouldSetPanResponder: () => {
103
+ const { hoverStyle, onClick, onLongPress, onTouchStart,
104
+ // onTouchMove,
105
+ // onTouchCancel,
106
+ onTouchEnd } = props;
107
+ return !!(hoverStyle || onClick || onLongPress || onTouchStart || onTouchEnd);
108
+ },
109
+ onShouldBlockNativeResponder: () => false,
110
+ onPanResponderGrant: (evt) => {
111
+ const { onTouchStart } = props;
112
+ onTouchStart && onTouchStart(getWxAppEvent(evt));
113
+ ref.current.startTimestamp = evt.nativeEvent.timestamp;
114
+ setStartTimer();
115
+ },
116
+ onPanResponderTerminationRequest: () => true,
117
+ onPanResponderRelease: (evt, gestureState) => {
118
+ const { onClick, onLongPress, onTouchEnd } = props;
119
+ onTouchEnd && onTouchEnd(getWxAppEvent(evt));
120
+ const endTimestamp = evt.nativeEvent.timestamp;
121
+ const gapTime = endTimestamp - ref.current.startTimestamp;
122
+ // 1 =>3, 修复部分android机型(三星折叠屏尤为明显),单击时dx,dy为>1,而被误判为move的情况。
123
+ const hasMove = Math.abs(gestureState.dx) >= 3 || Math.abs(gestureState.dy) >= 3;
124
+ if (!hasMove) {
125
+ if (gapTime <= 350) {
126
+ onClick && onClick(getWxAppEvent(evt));
127
+ }
128
+ else {
129
+ onLongPress && onLongPress(getWxAppEvent(evt));
130
+ }
131
+ }
132
+ setStayTimer();
133
+ },
134
+ onPanResponderTerminate: () => {
135
+ // const { onTouchCancel } = this.props
136
+ // onTouchCancel && onTouchCancel(this.getWxAppEvent(evt))
137
+ setStayTimer();
138
+ }
139
+ })).current;
140
+ return Object.assign(Object.assign(Object.assign({}, omit(props, [
141
+ 'style',
142
+ 'hoverStyle',
143
+ 'hoverStartTime',
144
+ 'hoverStayTime',
145
+ 'onClick',
146
+ 'onLongPress',
147
+ 'onTouchStart',
148
+ // 'onTouchMove',
149
+ // 'onTouchCancel',
150
+ 'onTouchEnd'
151
+ ])), panResponder.panHandlers), { style: [{ backgroundColor: 'transparent' }, style, isHover && hoverStyle] });
152
+ };
153
+ export default useClickable;
154
+ //# sourceMappingURL=useClickable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useClickable.js","sourceRoot":"","sources":["../../../src/components/hooks/useClickable.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tarojs/components-rn",
3
- "version": "3.6.22-nightly.5",
3
+ "version": "3.6.22-nightly.6",
4
4
  "description": "多端解决方案基础组件(RN)",
5
5
  "main": "./dist/index.js",
6
6
  "files": [
@@ -26,7 +26,7 @@
26
26
  "react-native-maps": "^1.3.2",
27
27
  "react-native-pager-view": "~6.0.1",
28
28
  "react-native-webview": "~11.23.0",
29
- "@tarojs/router-rn": "3.6.22-nightly.5"
29
+ "@tarojs/router-rn": "3.6.22-nightly.6"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@babel/core": "^7.14.5",