@beppla/tapas-ui 1.4.10 → 1.4.13
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/commonjs/Input/FOCUS_FIX_SUMMARY.md +201 -0
- package/commonjs/Input/FOCUS_ISSUE_ANALYSIS.md +188 -0
- package/commonjs/Input/Input.js +62 -3
- package/commonjs/Input/Input.js.map +1 -1
- package/commonjs/LineChart/LineChart.js +68 -22
- package/commonjs/LineChart/LineChart.js.map +1 -1
- package/commonjs/UserSwitcher/UserSwitcher.js +6 -5
- package/commonjs/UserSwitcher/UserSwitcher.js.map +1 -1
- package/module/Input/FOCUS_FIX_SUMMARY.md +201 -0
- package/module/Input/FOCUS_ISSUE_ANALYSIS.md +188 -0
- package/module/Input/Input.js +63 -3
- package/module/Input/Input.js.map +1 -1
- package/module/LineChart/LineChart.js +68 -22
- package/module/LineChart/LineChart.js.map +1 -1
- package/module/UserSwitcher/UserSwitcher.js +6 -5
- package/module/UserSwitcher/UserSwitcher.js.map +1 -1
- package/package.json +1 -1
- package/typescript/Input/Input.d.ts.map +1 -1
- package/typescript/LineChart/LineChart.d.ts +1 -0
- package/typescript/LineChart/LineChart.d.ts.map +1 -1
- package/typescript/UserSwitcher/UserSwitcher.d.ts.map +1 -1
|
@@ -67,6 +67,7 @@ const LineChart = ({
|
|
|
67
67
|
showDots = true,
|
|
68
68
|
yAxisFormat,
|
|
69
69
|
xAxisFormat,
|
|
70
|
+
onLineClick,
|
|
70
71
|
contentInset = {
|
|
71
72
|
top: 20,
|
|
72
73
|
bottom: 20,
|
|
@@ -216,19 +217,42 @@ const LineChart = ({
|
|
|
216
217
|
verticalAlign: legendPosition === 'top' || legendPosition === 'bottom' ? legendPosition : 'top',
|
|
217
218
|
align: legendPosition === 'left' || legendPosition === 'right' ? legendPosition : 'center',
|
|
218
219
|
content: renderLegend
|
|
219
|
-
}), seriesKeys.map((key, index) =>
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
220
|
+
}), seriesKeys.map((key, index) => {
|
|
221
|
+
const handleClick = clickData => {
|
|
222
|
+
if (onLineClick && clickData) {
|
|
223
|
+
// 找到原始数据索引
|
|
224
|
+
const dataIndex = chartData.findIndex(item => item.name === clickData.name);
|
|
225
|
+
if (dataIndex >= 0) {
|
|
226
|
+
if (isMultiSeries) {
|
|
227
|
+
const series = data[index];
|
|
228
|
+
const originalDataPoint = series?.data?.[dataIndex];
|
|
229
|
+
if (originalDataPoint) {
|
|
230
|
+
onLineClick(key, originalDataPoint, dataIndex);
|
|
231
|
+
}
|
|
232
|
+
} else {
|
|
233
|
+
const originalDataPoint = data[dataIndex];
|
|
234
|
+
if (originalDataPoint) {
|
|
235
|
+
onLineClick(key, originalDataPoint, dataIndex);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Line, {
|
|
242
|
+
type: curveType,
|
|
243
|
+
dataKey: key,
|
|
244
|
+
stroke: lineColors[index % lineColors.length],
|
|
245
|
+
strokeWidth: 2,
|
|
246
|
+
dot: showDots ? {
|
|
247
|
+
fill: lineColors[index % lineColors.length],
|
|
248
|
+
r: 4
|
|
249
|
+
} : false,
|
|
250
|
+
activeDot: showDots ? {
|
|
251
|
+
r: 6
|
|
252
|
+
} : false,
|
|
253
|
+
onClick: handleClick
|
|
254
|
+
}, key);
|
|
255
|
+
})]
|
|
232
256
|
});
|
|
233
257
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
234
258
|
style: [styles.container, {
|
|
@@ -262,17 +286,39 @@ const LineChart = ({
|
|
|
262
286
|
const Decorator = ({
|
|
263
287
|
x,
|
|
264
288
|
y,
|
|
265
|
-
data
|
|
289
|
+
data: chartValues
|
|
266
290
|
}) => {
|
|
267
291
|
if (!showDots || !Circle) return null;
|
|
268
|
-
return
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
292
|
+
return chartValues.map((value, index) => {
|
|
293
|
+
const handlePress = () => {
|
|
294
|
+
if (onLineClick) {
|
|
295
|
+
let originalDataPoint;
|
|
296
|
+
let seriesLabel;
|
|
297
|
+
if (isMultiSeries) {
|
|
298
|
+
const firstSeries = data[0];
|
|
299
|
+
originalDataPoint = firstSeries?.data?.[index] || {
|
|
300
|
+
value
|
|
301
|
+
};
|
|
302
|
+
seriesLabel = firstSeries?.label || 'Series 1';
|
|
303
|
+
} else {
|
|
304
|
+
originalDataPoint = data[index] || {
|
|
305
|
+
value
|
|
306
|
+
};
|
|
307
|
+
seriesLabel = 'value';
|
|
308
|
+
}
|
|
309
|
+
onLineClick(seriesLabel, originalDataPoint, index);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Circle, {
|
|
313
|
+
cx: x(index),
|
|
314
|
+
cy: y(value),
|
|
315
|
+
r: 4,
|
|
316
|
+
stroke: color,
|
|
317
|
+
fill: "white",
|
|
318
|
+
strokeWidth: 2,
|
|
319
|
+
onPress: handlePress
|
|
320
|
+
}, index);
|
|
321
|
+
});
|
|
276
322
|
};
|
|
277
323
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
278
324
|
style: [styles.container, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Text","_jsxRuntime","e","__esModule","default","RNLineChart","Grid","RNXAxis","Circle","RechartsLine","Line","RechartsXAxis","RechartsYAxis","CartesianGrid","Tooltip","Legend","ResponsiveContainer","Platform","OS","recharts","LineChart","XAxis","YAxis","console","warn","svgCharts","svg","data","width","height","color","colors","showGrid","showLabels","showXAxis","showYAxis","showLegend","legendPosition","legendIconType","legendIconSize","legendTextStyle","fontFamily","fontSize","fontWeight","letterSpacing","curveType","showDots","yAxisFormat","xAxisFormat","contentInset","top","bottom","left","right","style","testID","isMultiSeries","Array","isArray","length","jsx","View","styles","container","children","emptyText","chartData","seriesKeys","series","map","s","i","label","maxLength","Math","max","point","name","forEach","sIndex","value","push","item","index","lineColors","renderLegend","props","payload","display","flexWrap","gap","justifyContent","padding","entry","iconStyle","marginRight","verticalAlign","backgroundColor","borderRadius","size","jsxs","alignItems","lineHeight","ChartComponent","margin","strokeDasharray","stroke","dataKey","tickFormatter","contentStyle","border","align","content","key","type","strokeWidth","dot","fill","r","activeDot","d","Decorator","x","y","cx","cy","chartWrapper","flex","gridMin","xAxis","formatLabel","toString","exports","StyleSheet","create","marginHorizontal","textAlign","marginTop"],"sourceRoot":"../../../components","sources":["LineChart/LineChart.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Text","_jsxRuntime","e","__esModule","default","RNLineChart","Grid","RNXAxis","Circle","RechartsLine","Line","RechartsXAxis","RechartsYAxis","CartesianGrid","Tooltip","Legend","ResponsiveContainer","Platform","OS","recharts","LineChart","XAxis","YAxis","console","warn","svgCharts","svg","data","width","height","color","colors","showGrid","showLabels","showXAxis","showYAxis","showLegend","legendPosition","legendIconType","legendIconSize","legendTextStyle","fontFamily","fontSize","fontWeight","letterSpacing","curveType","showDots","yAxisFormat","xAxisFormat","onLineClick","contentInset","top","bottom","left","right","style","testID","isMultiSeries","Array","isArray","length","jsx","View","styles","container","children","emptyText","chartData","seriesKeys","series","map","s","i","label","maxLength","Math","max","point","name","forEach","sIndex","value","push","item","index","lineColors","renderLegend","props","payload","display","flexWrap","gap","justifyContent","padding","entry","iconStyle","marginRight","verticalAlign","backgroundColor","borderRadius","size","jsxs","alignItems","lineHeight","ChartComponent","margin","strokeDasharray","stroke","dataKey","tickFormatter","contentStyle","border","align","content","key","handleClick","clickData","dataIndex","findIndex","originalDataPoint","type","strokeWidth","dot","fill","r","activeDot","onClick","d","Decorator","x","y","chartValues","handlePress","seriesLabel","firstSeries","cx","cy","onPress","chartWrapper","flex","gridMin","xAxis","formatLabel","toString","exports","StyleSheet","create","marginHorizontal","textAlign","marginTop"],"sourceRoot":"../../../components","sources":["LineChart/LineChart.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -155,21 +155,22 @@ const TapasUserSwitcher = ({
|
|
|
155
155
|
// 渲染用户列表
|
|
156
156
|
const renderUserList = (0, _react.useCallback)(() => {
|
|
157
157
|
const displayUsers = getDisplayUsers();
|
|
158
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.
|
|
158
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
159
159
|
style: [styles.userListContainer, {
|
|
160
160
|
height
|
|
161
161
|
}],
|
|
162
|
-
onPress: handleUserSwitcherPress,
|
|
163
|
-
testID: testID,
|
|
164
162
|
children: displayUsers.map((user, index) => renderAvatar(user, index))
|
|
165
163
|
});
|
|
166
|
-
}, [getDisplayUsers, height,
|
|
167
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.
|
|
164
|
+
}, [getDisplayUsers, height, renderAvatar, styles]);
|
|
165
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
168
166
|
...otherProps,
|
|
169
167
|
style: [styles.container, {
|
|
170
168
|
height,
|
|
171
169
|
width: isLoggedIn ? containerWidth : "auto"
|
|
172
170
|
}, style],
|
|
171
|
+
testID: testID,
|
|
172
|
+
onPress: isLoggedIn ? handleUserSwitcherPress : undefined,
|
|
173
|
+
disabled: !isLoggedIn,
|
|
173
174
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
174
175
|
style: {
|
|
175
176
|
opacity: fadeAnim,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_themed","_Button","_interopRequireDefault","_TapasIcon","_Image","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TapasUserSwitcher","userList","isLoggedIn","height","currentUserId","avatarType","loginButtonText","onUserSwitcherPress","onLoginPress","onUserListChange","animationDuration","style","testID","otherProps","styles","useStyles","containerWidth","setContainerWidth","useState","fadeAnim","useRef","Animated","Value","current","scaleAnim","avatarSizes","useEffect","length","process","env","NODE_ENV","setValue","parallel","timing","toValue","duration","useNativeDriver","start","moveUserToFront","useCallback","users","userId","currentUserIndex","findIndex","user","id","currentUser","otherUsers","filter","getDisplayUsers","orderedUsers","slice","handleUserSwitcherPress","handleLoginPress","renderAvatar","index","size","leftPosition","zIndex","opacity","avatarContainerStyle","avatarContainer","left","width","borderRadius","avatar","jsx","View","children","backgroundColor","name","color","radius","uri","defaultAvatarBackground","defaultAvatarIcon","renderUserList","displayUsers","Pressable","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_themed","_Button","_interopRequireDefault","_TapasIcon","_Image","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TapasUserSwitcher","userList","isLoggedIn","height","currentUserId","avatarType","loginButtonText","onUserSwitcherPress","onLoginPress","onUserListChange","animationDuration","style","testID","otherProps","styles","useStyles","containerWidth","setContainerWidth","useState","fadeAnim","useRef","Animated","Value","current","scaleAnim","avatarSizes","useEffect","length","process","env","NODE_ENV","setValue","parallel","timing","toValue","duration","useNativeDriver","start","moveUserToFront","useCallback","users","userId","currentUserIndex","findIndex","user","id","currentUser","otherUsers","filter","getDisplayUsers","orderedUsers","slice","handleUserSwitcherPress","handleLoginPress","renderAvatar","index","size","leftPosition","zIndex","opacity","avatarContainerStyle","avatarContainer","left","width","borderRadius","avatar","jsx","View","children","backgroundColor","name","color","radius","uri","defaultAvatarBackground","defaultAvatarIcon","renderUserList","displayUsers","userListContainer","map","Pressable","container","onPress","undefined","disabled","transform","scale","exports","makeStyles","theme","display","alignSelf","flexDirection","alignItems","justifyContent","position","overflow","flexGrow","colors","grey2","_default","withTheme","UserSwitcher"],"sourceRoot":"../../../components","sources":["UserSwitcher/UserSwitcher.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,MAAA,GAAAF,sBAAA,CAAAJ,OAAA;AAAwC,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAI,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAT,wBAAAS,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAb,uBAAA,YAAAA,CAAAS,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAoCxC,MAAMgB,iBAAmD,GAAGA,CAAC;EAC3DC,QAAQ,GAAG,EAAE;EACbC,UAAU,GAAG,KAAK;EAClBC,MAAM,GAAG,EAAE;EACXC,aAAa;EACbC,UAAU,GAAG,KAAK;EAClBC,eAAe,GAAG,OAAO;EACzBC,mBAAmB;EACnBC,YAAY;EACZC,gBAAgB;EAChBC,iBAAiB,GAAG,GAAG;EACvBC,KAAK;EACLC,MAAM;EACN,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,MAAM,GAAGC,SAAS,CAAC,CAAC;EAC1B,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAG,IAAAC,eAAQ,EAAC,EAAE,CAAC;;EAExD;EACA,MAAMC,QAAQ,GAAG,IAAAC,aAAM,EAAC,IAAIC,qBAAQ,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACtD,MAAMC,SAAS,GAAG,IAAAJ,aAAM,EAAC,IAAIC,qBAAQ,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAACC,OAAO;;EAEzD;EACA,MAAME,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;EAEhC;EACA,IAAAC,gBAAS,EAAC,MAAM;IACd,IAAIzB,QAAQ,CAAC0B,MAAM,IAAI,CAAC,EAAE;MACxBV,iBAAiB,CAAC,EAAE,CAAC;IACvB,CAAC,MAAM,IAAIhB,QAAQ,CAAC0B,MAAM,KAAK,CAAC,EAAE;MAChCV,iBAAiB,CAAC,EAAE,CAAC;IACvB,CAAC,MAAM;MACLA,iBAAiB,CAAC,EAAE,CAAC;IACvB;EACF,CAAC,EAAE,CAAChB,QAAQ,CAAC0B,MAAM,CAAC,CAAC;;EAErB;EACA,IAAAD,gBAAS,EAAC,MAAM;IACd;IACA,IAAIE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,MAAM,EAAE;MACnCX,QAAQ,CAACY,QAAQ,CAAC,CAAC,CAAC;MACpBP,SAAS,CAACO,QAAQ,CAAC,CAAC,CAAC;MACrB;IACF;IAEAZ,QAAQ,CAACY,QAAQ,CAAC,CAAC,CAAC;IACpBP,SAAS,CAACO,QAAQ,CAAC,GAAG,CAAC;IAEvBV,qBAAQ,CAACW,QAAQ,CAAC,CAChBX,qBAAQ,CAACY,MAAM,CAACd,QAAQ,EAAE;MACxBe,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAEzB,iBAAiB;MAC3B0B,eAAe,EAAE;IACnB,CAAC,CAAC,EACFf,qBAAQ,CAACY,MAAM,CAACT,SAAS,EAAE;MACzBU,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAEzB,iBAAiB;MAC3B0B,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC,CAACC,KAAK,CAAC,CAAC;EACZ,CAAC,EAAE,CAACjC,aAAa,EAAEM,iBAAiB,CAAC,CAAC;;EAEtC;EACA,MAAM4B,eAAe,GAAG,IAAAC,kBAAW,EAAC,CAACC,KAAiB,EAAEC,MAAc,KAAiB;IACrF,MAAMC,gBAAgB,GAAGF,KAAK,CAACG,SAAS,CAACC,IAAI,IAAIA,IAAI,CAACC,EAAE,KAAKJ,MAAM,CAAC;IACpE,IAAIC,gBAAgB,KAAK,CAAC,CAAC,EAAE,OAAOF,KAAK;IAEzC,MAAMM,WAAW,GAAGN,KAAK,CAACE,gBAAgB,CAAC;IAC3C,IAAI,CAACI,WAAW,EAAE,OAAON,KAAK;IAE9B,MAAMO,UAAU,GAAGP,KAAK,CAACQ,MAAM,CAACJ,IAAI,IAAIA,IAAI,CAACC,EAAE,KAAKJ,MAAM,CAAC;IAC3D,OAAO,CAACK,WAAW,EAAE,GAAGC,UAAU,CAAC;EACrC,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAME,eAAe,GAAG,IAAAV,kBAAW,EAAC,MAAkB;IACpD,MAAMW,YAAY,GAAG9C,aAAa,GAC9BkC,eAAe,CAACrC,QAAQ,EAAEG,aAAa,CAAC,GACxCH,QAAQ;IACZ,OAAOiD,YAAY,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;EACjC,CAAC,EAAE,CAAClD,QAAQ,EAAEG,aAAa,EAAEkC,eAAe,CAAC,CAAC;;EAE9C;EACA,MAAMc,uBAAuB,GAAG,IAAAb,kBAAW,EAAC,MAAM;IAChDhC,mBAAmB,GAAG,CAAC;EACzB,CAAC,EAAE,CAACA,mBAAmB,CAAC,CAAC;;EAEzB;EACA,MAAM8C,gBAAgB,GAAG,IAAAd,kBAAW,EAAC,MAAM;IACzC/B,YAAY,GAAG,CAAC;EAClB,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;;EAElB;EACA,MAAM8C,YAAY,GAAG,IAAAf,kBAAW,EAAC,CAACK,IAAc,EAAEW,KAAa,KAAK;IAClE,MAAMC,IAAI,GAAG/B,WAAW,CAAC8B,KAAK,CAAC,IAAI,EAAE;IACrC,MAAME,YAAY,GAAGF,KAAK,KAAK,CAAC,GAAG,CAAC,GAAGA,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;IAC5D,MAAMG,MAAM,GAAG,EAAE,GAAGH,KAAK,GAAG,CAAC;IAC7B,MAAMI,OAAO,GAAG,CAAC,GAAGJ,KAAK,GAAG,IAAI;IAEhC,MAAMK,oBAAoB,GAAG,CAC3B9C,MAAM,CAAC+C,eAAe,EACtB;MACEC,IAAI,EAAEL,YAAY;MAClBM,KAAK,EAAEP,IAAI;MACXrD,MAAM,EAAEqD,IAAI;MACZQ,YAAY,EAAER,IAAI,GAAG,CAAC;MACtBE,MAAM;MACNC;IACF,CAAC,CACF;IAED,IAAIf,IAAI,CAACqB,MAAM,EAAE;MACf,oBACE,IAAArF,WAAA,CAAAsF,GAAA,EAAC5F,YAAA,CAAA6F,IAAI;QAAkCxD,KAAK,EAAEiD,oBAAqB;QAAAQ,QAAA,EAChE/D,UAAU,KAAK,KAAK,gBACnB,IAAAzB,WAAA,CAAAsF,GAAA,EAAC5F,YAAA,CAAA6F,IAAI;UAACxD,KAAK,EAAE;YAAEoD,KAAK,EAAEP,IAAI;YAAErD,MAAM,EAAEqD,IAAI;YAAEa,eAAe,EAAE,SAAS;YAAEL,YAAY,EAAER,IAAI,GAAG;UAAE,CAAE;UAAC5C,MAAM,EAAC,YAAY;UAAAwD,QAAA,eAEjH,IAAAxF,WAAA,CAAAsF,GAAA,EAACxF,UAAA,CAAAK,OAAS;YAACuF,IAAI,EAAC,MAAM;YAACd,IAAI,EAAEA,IAAI,GAAG,GAAI;YAACe,KAAK,EAAC;UAAM,CAAE;QAAC,CACpD,CAAC,gBAEP,IAAA3F,WAAA,CAAAsF,GAAA,EAACvF,MAAA,CAAAI,OAAU;UACTgF,KAAK,EAAEP,IAAK;UACZrD,MAAM,EAAEqD,IAAK;UACbgB,MAAM;UACNC,GAAG,EAAE7B,IAAI,CAACqB;QAAO,CAClB;MACF,GAbQrB,IAAI,CAACC,EAAE,IAAI,QAAQU,KAAK,EAc7B,CAAC;IAEX;;IAEA;IACA,oBACE,IAAA3E,WAAA,CAAAsF,GAAA,EAAC5F,YAAA,CAAA6F,IAAI;MAAkCxD,KAAK,EAAEiD,oBAAqB;MAAAQ,QAAA,eACjE,IAAAxF,WAAA,CAAAsF,GAAA,EAAC5F,YAAA,CAAA6F,IAAI;QAACxD,KAAK,EAAE,CAACG,MAAM,CAAC4D,uBAAuB,EAAE;UAAEf;QAAQ,CAAC,CAAE;QAAAS,QAAA,eACzD,IAAAxF,WAAA,CAAAsF,GAAA,EAACxF,UAAA,CAAAK,OAAS;UACR4B,KAAK,EAAEG,MAAM,CAAC6D,iBAAkB;UAChCnB,IAAI,EAAEA,IAAI,GAAG,CAAE;UACfe,KAAK,EAAC,MAAM;UACZD,IAAI,EAAC;QAAQ,CACd;MAAC,CACE;IAAC,GARE1B,IAAI,CAACC,EAAE,IAAI,QAAQU,KAAK,EAS7B,CAAC;EAEX,CAAC,EAAE,CAAClD,UAAU,EAAES,MAAM,CAAC,CAAC;;EAExB;EACA,MAAM8D,cAAc,GAAG,IAAArC,kBAAW,EAAC,MAAM;IACvC,MAAMsC,YAAY,GAAG5B,eAAe,CAAC,CAAC;IAEtC,oBACE,IAAArE,WAAA,CAAAsF,GAAA,EAAC5F,YAAA,CAAA6F,IAAI;MAACxD,KAAK,EAAE,CAACG,MAAM,CAACgE,iBAAiB,EAAE;QAAE3E;MAAO,CAAC,CAAE;MAAAiE,QAAA,EACjDS,YAAY,CAACE,GAAG,CAAC,CAACnC,IAAI,EAAEW,KAAK,KAAKD,YAAY,CAACV,IAAI,EAAEW,KAAK,CAAC;IAAC,CACzD,CAAC;EAEX,CAAC,EAAE,CAACN,eAAe,EAAE9C,MAAM,EAAEmD,YAAY,EAAExC,MAAM,CAAC,CAAC;EAEnD,oBACE,IAAAlC,WAAA,CAAAsF,GAAA,EAAC5F,YAAA,CAAA0G,SAAS;IAAA,GACJnE,UAAU;IACdF,KAAK,EAAE,CACLG,MAAM,CAACmE,SAAS,EAChB;MACE9E,MAAM;MACN4D,KAAK,EAAE7D,UAAU,GAAGc,cAAc,GAAG;IACvC,CAAC,EACDL,KAAK,CACL;IACFC,MAAM,EAAEA,MAAO;IACfsE,OAAO,EAAEhF,UAAU,GAAGkD,uBAAuB,GAAG+B,SAAU;IAC1DC,QAAQ,EAAE,CAAClF,UAAW;IAAAkE,QAAA,eAEtB,IAAAxF,WAAA,CAAAsF,GAAA,EAAC5F,YAAA,CAAA+C,QAAQ,CAAC8C,IAAI;MACZxD,KAAK,EAAE;QACLgD,OAAO,EAAExC,QAAQ;QACjBkE,SAAS,EAAE,CAAC;UAAEC,KAAK,EAAE9D;QAAU,CAAC;MAClC,CAAE;MAAA4C,QAAA,EAEDlE,UAAU,GACT0E,cAAc,CAAC,CAAC,gBAEhB,IAAAhG,WAAA,CAAAsF,GAAA,EAAC1F,OAAA,CAAAO,OAAW;QAACmG,OAAO,EAAE7B,gBAAiB;QAAAe,QAAA,EACpC9D;MAAe,CACL;IACd,CACY;EAAC,CACP,CAAC;AAEhB,CAAC;AAACiF,OAAA,CAAAvF,iBAAA,GAAAA,iBAAA;AAEF,MAAMe,SAAS,GAAG,IAAAyE,kBAAU,EAAEC,KAAK,KAAM;EACvCR,SAAS,EAAE;IACTS,OAAO,EAAE,MAAM;IACfvF,MAAM,EAAE,EAAE;IACVwF,SAAS,EAAE;EACb,CAAC;EACDb,iBAAiB,EAAE;IACjBY,OAAO,EAAE,MAAM;IACfE,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxB3F,MAAM,EAAE,EAAE;IACV4F,QAAQ,EAAE;EACZ,CAAC;EACDlC,eAAe,EAAE;IACf6B,OAAO,EAAE,MAAM;IACfK,QAAQ,EAAE,UAAU;IACpBH,aAAa,EAAE,QAAQ;IACvBE,cAAc,EAAE,QAAQ;IACxBE,QAAQ,EAAE,QAAQ;IAClBtC,MAAM,EAAE;EACV,CAAC;EACDgB,uBAAuB,EAAE;IACvBgB,OAAO,EAAE,MAAM;IACfO,QAAQ,EAAE,CAAC;IACXjC,YAAY,EAAE,EAAE;IAChB8B,cAAc,EAAE,QAAQ;IACxBF,aAAa,EAAE,QAAQ;IACvBvB,eAAe,EAAEoB,KAAK,CAACS,MAAM,CAACC;EAChC,CAAC;EACDxB,iBAAiB,EAAE;IACjBe,OAAO,EAAE,MAAM;IACfC,SAAS,EAAE;EACb;AACF,CAAC,CAAC,CAAC;AAAC,IAAAS,QAAA,GAAAb,OAAA,CAAAxG,OAAA,GAEW,IAAAsH,iBAAS,EAACrG,iBAAiB,CAAC,EAE3C;AACO,MAAMsG,YAAY,GAAAf,OAAA,CAAAe,YAAA,GAAG,IAAAD,iBAAS,EAACrG,iBAAiB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Android Input 焦点跳动问题修复总结
|
|
2
|
+
|
|
3
|
+
## 修复时间
|
|
4
|
+
2025-12-04
|
|
5
|
+
|
|
6
|
+
## 修复方案
|
|
7
|
+
采用**方案 1 + 方案 3 组合**:添加焦点状态检查 + 改进延迟 blur 逻辑
|
|
8
|
+
|
|
9
|
+
## 修复内容
|
|
10
|
+
|
|
11
|
+
### 方案 1:添加焦点状态检查
|
|
12
|
+
|
|
13
|
+
#### 1. 添加焦点状态跟踪
|
|
14
|
+
- 新增 `isFocusedRef`:使用 ref 存储 `isFocused` 的最新值,避免在 useEffect 中需要依赖
|
|
15
|
+
- 新增 `lastFocusTimeRef`:记录最后一次 focus 的时间戳
|
|
16
|
+
- 新增 `FOCUS_SWITCH_PROTECTION_PERIOD`:焦点切换保护期(200ms)
|
|
17
|
+
|
|
18
|
+
### 2. 改进 `handleFocus` 逻辑(方案 3)
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
const handleFocus = useCallback((e: any) => {
|
|
22
|
+
// 清除可能存在的 blur 延迟
|
|
23
|
+
if (blurTimeoutRef.current) {
|
|
24
|
+
clearTimeout(blurTimeoutRef.current);
|
|
25
|
+
blurTimeoutRef.current = null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// 方案 3:清除所有其他 Input 的重新聚焦标记
|
|
29
|
+
// 当当前 Input 获得焦点时,清除其他 Input 的 shouldRefocusRef,防止焦点跳动
|
|
30
|
+
inputInstancesRef.forEach((ref) => {
|
|
31
|
+
if (ref !== shouldRefocusRef) {
|
|
32
|
+
ref.current = false;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// 清除当前组件的重新聚焦标记,因为当前组件已经获得焦点
|
|
37
|
+
shouldRefocusRef.current = false;
|
|
38
|
+
// 记录 focus 时间戳,用于焦点切换保护期判断
|
|
39
|
+
lastFocusTimeRef.current = Date.now();
|
|
40
|
+
// 更新 ref 和 state
|
|
41
|
+
isFocusedRef.current = true;
|
|
42
|
+
setIsFocused(true);
|
|
43
|
+
onFocus?.(e);
|
|
44
|
+
}, [onFocus]);
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**改进点**(方案 3):
|
|
48
|
+
- **全局实例管理**:使用全局 `inputInstancesRef` Set 存储所有 Input 实例的 `shouldRefocusRef`
|
|
49
|
+
- **主动清除其他 Input 标记**:当当前 Input 获得焦点时,立即清除所有其他 Input 的 `shouldRefocusRef`,防止它们错误地重新聚焦
|
|
50
|
+
- 记录 focus 时间戳,用于后续保护期判断
|
|
51
|
+
- 同步更新 `isFocusedRef` 和 `isFocused` state
|
|
52
|
+
|
|
53
|
+
#### 4. 改进 `handleBlur` 逻辑
|
|
54
|
+
```typescript
|
|
55
|
+
// 在 blur 时同步更新 ref
|
|
56
|
+
isFocusedRef.current = false;
|
|
57
|
+
setIsFocused(false);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**改进点**:
|
|
61
|
+
- 确保 ref 和 state 同步更新
|
|
62
|
+
|
|
63
|
+
### 方案 3:改进延迟 blur 逻辑
|
|
64
|
+
|
|
65
|
+
#### 1. 全局 Input 实例管理
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
// 方案 3:全局 Input 实例管理器,用于清除其他 Input 的重新聚焦标记
|
|
69
|
+
const inputInstancesRef = new Set<React.MutableRefObject<boolean>>();
|
|
70
|
+
|
|
71
|
+
// 注册当前 Input 实例到全局管理器
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
if (Platform.OS === 'android' && enableBridgelessFix) {
|
|
74
|
+
inputInstancesRef.add(shouldRefocusRef);
|
|
75
|
+
return () => {
|
|
76
|
+
inputInstancesRef.delete(shouldRefocusRef);
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}, [enableBridgelessFix]);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**作用**:
|
|
83
|
+
- 维护所有 Input 实例的引用,用于在 focus 时清除其他 Input 的重新聚焦标记
|
|
84
|
+
- 组件卸载时自动清理,避免内存泄漏
|
|
85
|
+
|
|
86
|
+
#### 2. 在 `handleFocus` 中清除其他 Input 的标记
|
|
87
|
+
|
|
88
|
+
见上面的 `handleFocus` 逻辑部分。
|
|
89
|
+
|
|
90
|
+
### 方案 1:核心修复 - `keyboardDidShow` 监听器
|
|
91
|
+
|
|
92
|
+
添加了三层检查机制:
|
|
93
|
+
|
|
94
|
+
#### 检查 1:当前组件是否已聚焦
|
|
95
|
+
```typescript
|
|
96
|
+
if (isFocusedRef.current) {
|
|
97
|
+
// 当前组件已经聚焦,清除重新聚焦标记,避免后续误操作
|
|
98
|
+
shouldRefocusRef.current = false;
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
**作用**:如果当前组件已经聚焦,说明键盘是由当前组件触发的,不需要重新聚焦。
|
|
103
|
+
|
|
104
|
+
#### 检查 2:焦点切换保护期
|
|
105
|
+
```typescript
|
|
106
|
+
const timeSinceLastFocus = Date.now() - lastFocusTimeRef.current;
|
|
107
|
+
if (timeSinceLastFocus < FOCUS_SWITCH_PROTECTION_PERIOD) {
|
|
108
|
+
// 在保护期内,说明可能有其他 Input 正在获得焦点,不执行重新聚焦
|
|
109
|
+
shouldRefocusRef.current = false;
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
**作用**:如果在 200ms 内有 focus 事件(可能是其他 Input 获得焦点),不执行重新聚焦,避免焦点跳动。
|
|
114
|
+
|
|
115
|
+
#### 检查 3:异步执行时的状态再次检查
|
|
116
|
+
```typescript
|
|
117
|
+
if (shouldRefocusRef.current && !isFocusedRef.current && inputRef.current) {
|
|
118
|
+
// 执行重新聚焦逻辑
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
**作用**:在异步执行时再次检查状态,避免在异步执行期间状态已改变。
|
|
122
|
+
|
|
123
|
+
## 方案组合优势
|
|
124
|
+
|
|
125
|
+
**方案 1 + 方案 3 组合**提供了双重保障机制:
|
|
126
|
+
|
|
127
|
+
1. **方案 3(主动清除)**:在 Input B focus 时立即清除 Input A 的标记,从源头阻止焦点跳动
|
|
128
|
+
2. **方案 1(状态检查)**:即使标记未被清除,也会通过状态检查阻止重新聚焦,作为备用保障
|
|
129
|
+
|
|
130
|
+
这种组合方式确保了:
|
|
131
|
+
- ✅ **更快的响应**:方案 3 在 focus 时立即清除,不需要等待键盘事件
|
|
132
|
+
- ✅ **更强的保障**:方案 1 提供额外的状态检查,即使方案 3 失效也能阻止焦点跳动
|
|
133
|
+
- ✅ **更好的兼容性**:两种机制互补,适应不同的时序场景
|
|
134
|
+
|
|
135
|
+
## 修复原理
|
|
136
|
+
|
|
137
|
+
### 问题根源
|
|
138
|
+
当两个 Input 切换焦点时:
|
|
139
|
+
1. Input A blur → 设置 `shouldRefocusRef.current = true`
|
|
140
|
+
2. Input B focus → 触发键盘显示
|
|
141
|
+
3. 键盘显示 → 所有 Input 的 `keyboardDidShow` 监听器都被触发
|
|
142
|
+
4. Input A 的监听器检测到标记 → 错误地重新聚焦 Input A
|
|
143
|
+
|
|
144
|
+
### 修复机制
|
|
145
|
+
|
|
146
|
+
**方案 1:三层检查机制**
|
|
147
|
+
通过三层检查,确保只有在以下条件**全部满足**时才执行重新聚焦:
|
|
148
|
+
1. ✅ 当前组件**未聚焦**(`!isFocusedRef.current`)
|
|
149
|
+
2. ✅ 不在焦点切换保护期内(最近 200ms 内没有 focus 事件)
|
|
150
|
+
3. ✅ 确实需要重新聚焦(`shouldRefocusRef.current === true`)
|
|
151
|
+
|
|
152
|
+
**方案 3:主动清除机制**
|
|
153
|
+
当 Input B 获得焦点时,立即清除 Input A 的 `shouldRefocusRef`,双重保障:
|
|
154
|
+
1. ✅ Input B focus → 立即清除 Input A 的 `shouldRefocusRef.current = false`
|
|
155
|
+
2. ✅ 即使 Input A 的 `keyboardDidShow` 被触发,也会因为标记已被清除而不执行重新聚焦
|
|
156
|
+
|
|
157
|
+
## 修复效果
|
|
158
|
+
|
|
159
|
+
### 修复前
|
|
160
|
+
```
|
|
161
|
+
Input A blur → Input B focus → 键盘显示 → Input A 错误重新聚焦 → 焦点跳动
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 修复后(方案 1 + 方案 3 组合)
|
|
165
|
+
```
|
|
166
|
+
Input A blur → Input B focus → 立即清除 Input A 的标记 → 键盘显示 → Input A 检测到标记已清除 → 不执行重新聚焦 → 焦点正常切换
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**双重保障**:
|
|
170
|
+
1. **方案 3 主动清除**:Input B focus 时立即清除 Input A 的标记
|
|
171
|
+
2. **方案 1 状态检查**:即使标记未被清除,也会通过状态检查阻止重新聚焦
|
|
172
|
+
|
|
173
|
+
## 测试场景
|
|
174
|
+
|
|
175
|
+
修复后需要测试以下场景:
|
|
176
|
+
|
|
177
|
+
1. ✅ **单个 Input 聚焦**:点击单个 Input,键盘正常显示,无焦点跳动
|
|
178
|
+
2. ✅ **两个 Input 切换**:在 Input A 和 Input B 之间切换,焦点正常切换,无跳动
|
|
179
|
+
3. ✅ **快速连续切换**:快速连续点击多个 Input,焦点正常切换
|
|
180
|
+
4. ✅ **点击外部区域**:点击 Input 外部区域,键盘正常隐藏
|
|
181
|
+
5. ✅ **ScrollView 中的 Input**:在 ScrollView 中的 Input 正常聚焦
|
|
182
|
+
|
|
183
|
+
## 兼容性
|
|
184
|
+
|
|
185
|
+
- ✅ 保持对 RN 0.77 Bridgeless 模式的兼容
|
|
186
|
+
- ✅ 不影响 iOS 平台(仅在 Android 上生效)
|
|
187
|
+
- ✅ 可以通过 `enableBridgelessFix` 禁用修复
|
|
188
|
+
- ✅ 向后兼容,不影响现有功能
|
|
189
|
+
|
|
190
|
+
## 代码变更文件
|
|
191
|
+
|
|
192
|
+
- `components/Input/Input.tsx`
|
|
193
|
+
|
|
194
|
+
## 相关文档
|
|
195
|
+
|
|
196
|
+
- `components/Input/FOCUS_ISSUE_ANALYSIS.md` - 问题分析文档
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
**修复完成** ✅
|
|
201
|
+
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# Android Input 组件焦点跳动问题分析
|
|
2
|
+
|
|
3
|
+
## 问题描述
|
|
4
|
+
|
|
5
|
+
在 Android 平台上,当两个 Input 组件切换焦点时,出现焦点来回跳动的问题:
|
|
6
|
+
|
|
7
|
+
1. **第一个 Input** 失去焦点(blur)
|
|
8
|
+
2. **第二个 Input** 获取焦点(focus)
|
|
9
|
+
3. 焦点又**跳回第一个 Input**
|
|
10
|
+
4. 形成来回跳动的循环
|
|
11
|
+
|
|
12
|
+
## 问题场景重现
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
用户操作流程:
|
|
16
|
+
1. 点击 Input A → Input A 获得焦点
|
|
17
|
+
2. 点击 Input B → Input A 触发 blur,Input B 触发 focus
|
|
18
|
+
3. 键盘显示 → 触发 keyboardDidShow 事件
|
|
19
|
+
4. ❌ Input A 的 keyboardDidShow 监听器被触发
|
|
20
|
+
5. ❌ Input A 检测到 shouldRefocusRef.current === true
|
|
21
|
+
6. ❌ Input A 自动重新聚焦
|
|
22
|
+
7. ❌ 焦点从 Input B 跳回 Input A
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 根本原因分析
|
|
26
|
+
|
|
27
|
+
### 1. 全局键盘事件监听器冲突
|
|
28
|
+
|
|
29
|
+
**问题代码位置**:`components/Input/Input.tsx:140-188`
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
const keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', () => {
|
|
33
|
+
if (shouldRefocusRef.current) {
|
|
34
|
+
// 尝试重新聚焦
|
|
35
|
+
inputRef.current.focus();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**问题分析**:
|
|
41
|
+
- `keyboardDidShow` 是**全局事件**,所有 Input 组件实例都会收到
|
|
42
|
+
- 当第二个 Input 获得焦点并触发键盘显示时,**第一个 Input 的监听器也会被触发**
|
|
43
|
+
- 第一个 Input 检测到 `shouldRefocusRef.current === true`(在 blur 时设置的),就会尝试重新聚焦
|
|
44
|
+
- 这导致焦点被错误地抢回第一个 Input
|
|
45
|
+
|
|
46
|
+
### 2. 缺少焦点状态检查
|
|
47
|
+
|
|
48
|
+
**问题代码位置**:`components/Input/Input.tsx:143-187`
|
|
49
|
+
|
|
50
|
+
当前逻辑只检查 `shouldRefocusRef.current`,但没有检查:
|
|
51
|
+
- 当前是否有其他 Input 已经获得焦点
|
|
52
|
+
- 当前组件是否真的需要重新聚焦
|
|
53
|
+
- 是否正在切换焦点到其他 Input
|
|
54
|
+
|
|
55
|
+
### 3. 延迟 blur 与键盘事件的时序问题
|
|
56
|
+
|
|
57
|
+
**问题代码位置**:`components/Input/Input.tsx:90-123`
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
const handleBlur = useCallback((e: any) => {
|
|
61
|
+
if (Platform.OS === 'android' && enableBridgelessFix) {
|
|
62
|
+
shouldRefocusRef.current = true; // ⚠️ 问题:立即设置标记
|
|
63
|
+
blurTimeoutRef.current = setTimeout(() => {
|
|
64
|
+
// 延迟 500-800ms 后才真正执行 blur
|
|
65
|
+
}, delay);
|
|
66
|
+
}
|
|
67
|
+
}, [onBlur, enableBridgelessFix]);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**时序问题**:
|
|
71
|
+
1. Input A blur → 设置 `shouldRefocusRef.current = true`
|
|
72
|
+
2. Input B focus → 触发键盘显示
|
|
73
|
+
3. 键盘显示 → 触发 `keyboardDidShow`(所有 Input 都收到)
|
|
74
|
+
4. Input A 的监听器检测到标记 → 重新聚焦 Input A
|
|
75
|
+
5. 此时 Input B 刚获得焦点,就被 Input A 抢走了
|
|
76
|
+
|
|
77
|
+
### 4. 缺少组件实例标识
|
|
78
|
+
|
|
79
|
+
当前实现中,每个 Input 组件实例都是独立的,但它们共享同一个全局键盘事件。当多个 Input 同时存在时,无法区分:
|
|
80
|
+
- 哪个 Input 应该响应键盘事件
|
|
81
|
+
- 哪个 Input 正在失去焦点
|
|
82
|
+
- 哪个 Input 正在获得焦点
|
|
83
|
+
|
|
84
|
+
## 问题流程图
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
88
|
+
│ 用户点击 Input B(Input A 当前有焦点) │
|
|
89
|
+
└─────────────────────────────────────────────────────────────┘
|
|
90
|
+
│
|
|
91
|
+
▼
|
|
92
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
93
|
+
│ 1. Input A 触发 handleBlur │
|
|
94
|
+
│ - shouldRefocusRef.current = true │
|
|
95
|
+
│ - 设置延迟 blur(500-800ms) │
|
|
96
|
+
└─────────────────────────────────────────────────────────────┘
|
|
97
|
+
│
|
|
98
|
+
▼
|
|
99
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
100
|
+
│ 2. Input B 触发 handleFocus │
|
|
101
|
+
│ - 清除 Input B 的 blurTimeout │
|
|
102
|
+
│ - setIsFocused(true) │
|
|
103
|
+
└─────────────────────────────────────────────────────────────┘
|
|
104
|
+
│
|
|
105
|
+
▼
|
|
106
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
107
|
+
│ 3. 键盘显示 → 触发全局 keyboardDidShow 事件 │
|
|
108
|
+
│ - 所有 Input 组件的监听器都被触发 │
|
|
109
|
+
└─────────────────────────────────────────────────────────────┘
|
|
110
|
+
│
|
|
111
|
+
▼
|
|
112
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
113
|
+
│ 4. Input A 的 keyboardDidShow 监听器执行 │
|
|
114
|
+
│ - 检测到 shouldRefocusRef.current === true │
|
|
115
|
+
│ - ❌ 错误地重新聚焦 Input A │
|
|
116
|
+
└─────────────────────────────────────────────────────────────┘
|
|
117
|
+
│
|
|
118
|
+
▼
|
|
119
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
120
|
+
│ 5. 焦点从 Input B 跳回 Input A │
|
|
121
|
+
│ - 形成焦点跳动问题 │
|
|
122
|
+
└─────────────────────────────────────────────────────────────┘
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## 解决方案设计
|
|
126
|
+
|
|
127
|
+
### 方案 1:添加焦点状态检查(推荐)
|
|
128
|
+
|
|
129
|
+
**核心思路**:在 `keyboardDidShow` 监听器中,检查当前组件是否真的需要重新聚焦。
|
|
130
|
+
|
|
131
|
+
**实现要点**:
|
|
132
|
+
1. 检查 `isFocused` 状态,如果已经是聚焦状态,不执行重新聚焦
|
|
133
|
+
2. 检查是否有其他 Input 正在获得焦点(通过事件时间戳判断)
|
|
134
|
+
3. 添加短暂的"焦点切换保护期",在保护期内不执行重新聚焦
|
|
135
|
+
|
|
136
|
+
### 方案 2:使用全局焦点管理器
|
|
137
|
+
|
|
138
|
+
**核心思路**:创建一个全局的焦点管理器,统一管理所有 Input 的焦点状态。
|
|
139
|
+
|
|
140
|
+
**实现要点**:
|
|
141
|
+
1. 创建一个全局的焦点管理器 Context
|
|
142
|
+
2. 记录当前聚焦的 Input 实例 ID
|
|
143
|
+
3. 只有当前聚焦的 Input 才能响应键盘事件
|
|
144
|
+
|
|
145
|
+
### 方案 3:改进延迟 blur 逻辑
|
|
146
|
+
|
|
147
|
+
**核心思路**:在 blur 时,如果检测到有新的 focus 事件,立即取消重新聚焦标记。
|
|
148
|
+
|
|
149
|
+
**实现要点**:
|
|
150
|
+
1. 在 `handleFocus` 中,清除所有其他 Input 的 `shouldRefocusRef` 标记
|
|
151
|
+
2. 使用全局事件或 Context 来通知其他 Input 组件
|
|
152
|
+
|
|
153
|
+
## 推荐方案:方案 1 + 方案 3 组合
|
|
154
|
+
|
|
155
|
+
结合两种方案的优点:
|
|
156
|
+
1. **在 `handleFocus` 中清除其他 Input 的重新聚焦标记**
|
|
157
|
+
2. **在 `keyboardDidShow` 中检查 `isFocused` 状态**
|
|
158
|
+
3. **添加焦点切换保护期**
|
|
159
|
+
|
|
160
|
+
## 修复要点
|
|
161
|
+
|
|
162
|
+
1. ✅ 在 `handleFocus` 中,通过全局机制清除其他 Input 的 `shouldRefocusRef`
|
|
163
|
+
2. ✅ 在 `keyboardDidShow` 中,检查 `isFocused` 状态,如果已聚焦则不执行
|
|
164
|
+
3. ✅ 添加焦点切换保护期(例如 200ms),在保护期内不执行重新聚焦
|
|
165
|
+
4. ✅ 改进事件时序处理,确保 blur 和 focus 事件正确处理
|
|
166
|
+
|
|
167
|
+
## 测试场景
|
|
168
|
+
|
|
169
|
+
修复后需要测试以下场景:
|
|
170
|
+
|
|
171
|
+
1. ✅ 单个 Input 点击后键盘正常显示
|
|
172
|
+
2. ✅ 两个 Input 之间正常切换焦点
|
|
173
|
+
3. ✅ 快速连续切换多个 Input
|
|
174
|
+
4. ✅ 点击 Input 外部区域,键盘正常隐藏
|
|
175
|
+
5. ✅ 在 ScrollView 中的 Input 正常聚焦
|
|
176
|
+
|
|
177
|
+
## 风险评估
|
|
178
|
+
|
|
179
|
+
- **低风险**:方案 1 和方案 3 都是对现有逻辑的改进,不会破坏现有功能
|
|
180
|
+
- **兼容性**:修复后仍然保持对 RN 0.77 Bridgeless 模式的兼容
|
|
181
|
+
- **性能影响**:几乎无影响,只是添加了状态检查
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
**分析完成时间**:2025-12-04
|
|
186
|
+
**问题优先级**:高
|
|
187
|
+
**建议修复方案**:方案 1 + 方案 3 组合
|
|
188
|
+
|