mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-06-19 10:18:36 +08:00
feat: add a getIsDrawerOpenFromState utility to drawer
This commit is contained in:
@@ -17,6 +17,7 @@ export { default as DrawerContentScrollView } from './views/DrawerContentScrollV
|
||||
*/
|
||||
export { default as DrawerGestureContext } from './utils/DrawerGestureContext';
|
||||
|
||||
export { default as getIsDrawerOpenFromState } from './utils/getIsDrawerOpenFromState';
|
||||
export { default as useIsDrawerOpen } from './utils/useIsDrawerOpen';
|
||||
|
||||
/**
|
||||
|
||||
16
packages/drawer/src/utils/getIsDrawerOpenFromState.tsx
Normal file
16
packages/drawer/src/utils/getIsDrawerOpenFromState.tsx
Normal file
@@ -0,0 +1,16 @@
|
||||
import type {
|
||||
DrawerNavigationState,
|
||||
ParamListBase,
|
||||
} from '@react-navigation/native';
|
||||
|
||||
export default function getIsDrawerOpenFromState(
|
||||
state: DrawerNavigationState<ParamListBase>
|
||||
): boolean {
|
||||
if (state.history == null) {
|
||||
throw new Error(
|
||||
"Couldn't find the drawer status in the state object. Is it a valid state object of drawer navigator?"
|
||||
);
|
||||
}
|
||||
|
||||
return state.history.some((it) => it.type === 'drawer');
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import Drawer from './Drawer';
|
||||
import DrawerOpenContext from '../utils/DrawerOpenContext';
|
||||
import DrawerPositionContext from '../utils/DrawerPositionContext';
|
||||
import useWindowDimensions from '../utils/useWindowDimensions';
|
||||
import getIsDrawerOpenFromState from '../utils/getIsDrawerOpenFromState';
|
||||
import type {
|
||||
DrawerDescriptorMap,
|
||||
DrawerNavigationConfig,
|
||||
@@ -90,7 +91,7 @@ export default function DrawerView({
|
||||
|
||||
const { colors } = useTheme();
|
||||
|
||||
const isDrawerOpen = state.history.some((it) => it.type === 'drawer');
|
||||
const isDrawerOpen = getIsDrawerOpenFromState(state);
|
||||
|
||||
const handleDrawerOpen = React.useCallback(() => {
|
||||
navigation.dispatch({
|
||||
|
||||
Reference in New Issue
Block a user