Skip to content

Commit cb8aa44

Browse files
authored
Merge pull request #926 from thundersdata-frontend/rn-issue
fix: 修复Toast组件导致物理返回键无法正常使用的bug
2 parents 38e1e60 + 539c123 commit cb8aa44

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

.changeset/cyan-owls-glow.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@td-design/react-native': patch
3+
---
4+
5+
修复Toast组件导致物理返回键无法正常使用的bug

packages/react-native/src/toast/useToast.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useEffect, useRef, useState } from 'react';
2-
import { BackHandler } from 'react-native';
2+
import { BackHandler, NativeEventSubscription } from 'react-native';
33

44
import { useMemoizedFn } from '@td-design/rn-hooks';
55

@@ -45,11 +45,14 @@ export default function useToast() {
4545

4646
/** 当Toast显示的时候,不允许安卓物理返回键可用 */
4747
useEffect(() => {
48-
BackHandler.addEventListener('hardwareBackPress', () => visible);
48+
let backHandler: NativeEventSubscription | undefined;
49+
if (visible) {
50+
backHandler = BackHandler.addEventListener('hardwareBackPress', () => true);
51+
} else {
52+
backHandler?.remove();
53+
}
4954

50-
return () => {
51-
BackHandler.removeEventListener('hardwareBackPress', () => false);
52-
};
55+
return () => backHandler?.remove();
5356
}, [visible]);
5457

5558
return {

0 commit comments

Comments
 (0)