fix(expo): 发送后延时 refocus 聊天输入框
发送会递增 inputResetKey 以 remount TextInput,需在下一帧再 focus 才能延续键盘输入。 Made-with: Cursor
This commit is contained in:
@@ -1219,6 +1219,17 @@ export default function ConversationScreen() {
|
||||
}
|
||||
}, []);
|
||||
|
||||
/** 发送后 `inputResetKey` 会 remount TextInput,需下一帧再 focus 才能延续键盘输入 */
|
||||
const scheduleRefocusComposer = useCallback(() => {
|
||||
InteractionManager.runAfterInteractions(() => {
|
||||
requestAnimationFrame(() => {
|
||||
requestAnimationFrame(() => {
|
||||
textInputRef.current?.focus();
|
||||
});
|
||||
});
|
||||
});
|
||||
}, []);
|
||||
|
||||
const flattenedData = useMemo(
|
||||
() => flattenMessagesForList(messages ?? []),
|
||||
[messages],
|
||||
@@ -1366,6 +1377,7 @@ export default function ConversationScreen() {
|
||||
pendingTextSendRef.current = text;
|
||||
setInput('');
|
||||
setInputResetKey((k) => k + 1);
|
||||
scheduleRefocusComposer();
|
||||
clearConnectingSendTimeout();
|
||||
connectingSendTimeoutRef.current = setTimeout(() => {
|
||||
connectingSendTimeoutRef.current = null;
|
||||
@@ -1379,6 +1391,7 @@ export default function ConversationScreen() {
|
||||
sendText(text);
|
||||
setInput('');
|
||||
setInputResetKey((k) => k + 1);
|
||||
scheduleRefocusComposer();
|
||||
};
|
||||
|
||||
/** 仅完全断开时禁用发送/语音;连接中可点发送(排队) */
|
||||
|
||||
Reference in New Issue
Block a user