react-native 中的全球汉堡菜单
global hamburger menu in react-native
我正在尝试实现一个元素,该元素将充当汉堡菜单以在所有屏幕上切换我的抽屉导航器。但是,我的汉堡菜单(又名 MenuToggle)不会出现在我的任何界面中。以下是可以重现该问题的 3 个文件:
// Router.js - the main point of entry for the project
import React, { Component } from 'react';
import {DrawerNavigator} from 'react-navigation';
import Contact from './Contact';
// Router
let Router =
{
Contact:{screen:Contact},
}
const Navigator = DrawerNavigator(Router);
export default Navigator;
现在这是我的 contact.js
// Contact.js
import React, { Component } from 'react';
import {StackNavigator} from 'react-navigation';
import MenuToggle from './MenuToggle';
class Contact extends Component {
static navigationOptions = {title:"Contact",drawLabel:"Contact"};
render() {
return (
<MenuToggle navigate={this.props.navigation.navigate}/>
);
}
}
let Router =
{
Contact:{screen:Contact}
}
const Navigator = StackNavigator(Router);
export default Navigator;
这是我的 MenuToggle.js
// MenuToggle.js
import React, { Component } from 'react';
import {
View,
TouchableHighlight
} from 'react-native';
export default class MenuToggle extends Component {
constructor(props)
{
super(props);
}
render() {
const style1 = {
backgroundColor:'yellow',
width:40,
height:40,
zIndex:20,
position:'absolute', // comment out this line to see the menu toggle
top:5,
right:-80,
};
const style2 = {
backgroundColor:'yellow',
}
return (
<TouchableHighlight
onPress={() => this.props.navigate('DrawerOpen')} style={style1}>
<View style={style2}></View>
</TouchableHighlight>
);
}
}
我的 MenuToggle.js 从未出现在联系人屏幕中。但是,如果我注释掉 position:absolute
,那么它会出现在我的 header 下方和左侧一点。但我需要它出现在屏幕的右上角,覆盖在 header 之上。
如何让这个汉堡包菜单显示在右上角的所有屏幕上?
我发现了这个错误。我不小心设置了 right:-80
使元素不可见。我做到了 right:80
然后菜单项就可见了。
我正在尝试实现一个元素,该元素将充当汉堡菜单以在所有屏幕上切换我的抽屉导航器。但是,我的汉堡菜单(又名 MenuToggle)不会出现在我的任何界面中。以下是可以重现该问题的 3 个文件:
// Router.js - the main point of entry for the project
import React, { Component } from 'react';
import {DrawerNavigator} from 'react-navigation';
import Contact from './Contact';
// Router
let Router =
{
Contact:{screen:Contact},
}
const Navigator = DrawerNavigator(Router);
export default Navigator;
现在这是我的 contact.js
// Contact.js
import React, { Component } from 'react';
import {StackNavigator} from 'react-navigation';
import MenuToggle from './MenuToggle';
class Contact extends Component {
static navigationOptions = {title:"Contact",drawLabel:"Contact"};
render() {
return (
<MenuToggle navigate={this.props.navigation.navigate}/>
);
}
}
let Router =
{
Contact:{screen:Contact}
}
const Navigator = StackNavigator(Router);
export default Navigator;
这是我的 MenuToggle.js
// MenuToggle.js
import React, { Component } from 'react';
import {
View,
TouchableHighlight
} from 'react-native';
export default class MenuToggle extends Component {
constructor(props)
{
super(props);
}
render() {
const style1 = {
backgroundColor:'yellow',
width:40,
height:40,
zIndex:20,
position:'absolute', // comment out this line to see the menu toggle
top:5,
right:-80,
};
const style2 = {
backgroundColor:'yellow',
}
return (
<TouchableHighlight
onPress={() => this.props.navigate('DrawerOpen')} style={style1}>
<View style={style2}></View>
</TouchableHighlight>
);
}
}
我的 MenuToggle.js 从未出现在联系人屏幕中。但是,如果我注释掉 position:absolute
,那么它会出现在我的 header 下方和左侧一点。但我需要它出现在屏幕的右上角,覆盖在 header 之上。
如何让这个汉堡包菜单显示在右上角的所有屏幕上?
我发现了这个错误。我不小心设置了 right:-80
使元素不可见。我做到了 right:80
然后菜单项就可见了。