我一直在寻找一个解决方案很长一段时间,但令人惊讶的是,我认为没有人面对它。所以我张贴它。
我用React Navigation V3创建了一个简单的抽屉导航器。我添加了一个菜单图标,当我点击它时,抽屉会显示它应该是的样子。但是,没有手势起作用。从左向右滑动没有任何作用。即使抽屉打开,点击空白空间也不会关闭抽屉。
下面是我的代码:
import {
createStackNavigator,
createSwitchNavigator,
createAppContainer,
createDrawerNavigator
} from 'react-navigation';
import Home from './screens/Home';
import LoginForm from './screens/LoginForm';
import Articles from './screens/Articles';
const AuthStack = createStackNavigator({
LoginScreen: LoginForm
});
const AppStack = createDrawerNavigator({
HomeScreen: Home,
ArticlesScreen: Articles
});
const RootNavigator = createSwitchNavigator(
{
Auth: AuthStack,
App: AppStack
},
{
initialRouteName: 'Auth'
}
);
export default createAppContainer(RootNavigator);
5条答案
按热度按时间jckbn6z71#
我已经找到了解决方案。React Navigation依赖于
react-native-gesture-handler
库。在React Navigation文档的安装部分,它只说使用命令react-native link
创建链接。这对于iOS来说已经足够了。但是对于Android,你必须编辑MainActivity.java
文件,以便手势处理程序库可以按预期工作:请参阅文档:https://kmagiera.github.io/react-native-gesture-handler/docs/getting-started.html
实际上,React Navigation文档中没有任何地方提到要修改任何文件,因为它是特定于
react-native-gesture-handler
而不是React Navigation
的。我在这里保留了答案,以便它可以帮助其他人。**更新:**React Navigation的最新文档解决了这个问题
ckocjqey2#
在项目的
index.js
中,只需使用gestureHandlerRootHOC
:资源:https://github.com/react-navigation/drawer/issues/105#issuecomment-540667009
更新:
在React导航〉5.x中
只需将
react-native-gesture-handler
放在根index.js
的开头6l7fqoea3#
在0.61.0以上的版本中似乎是固定的,但对于旧版本,这对我来说是有效的。
在
index.js
中:drkbr07n4#
我禁用了'useLegacyImplementation'和work的。
vltsax255#
React native文档更新了这个问题,你可以在下面的链接中找到一个名为将依赖项安装到裸React Native项目的部分
https://reactnavigation.org/docs/en/getting-started.html#installation