私はReact-Nativeに非常に慣れていないので、何かが欠けている可能性があります。しかし、私がやりたいのは、メインのナビゲーションバーの設定ページにハンバーガータイプのボタンを追加することだけです。主要な部分にリンクを設定しました。これでハンバーガーボタンを機能させることができます。 スクリーンショット
import React from 'react';
import { AppRegistry, Text, View, Button } from 'react-native';
import { StackNavigator } from 'react-navigation';
class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Welcome',
headerLeft: <Button onPress={ WHAT GOES HERE?? } title= "=" />
};
render() {
const { navigate } = this.props.navigation;
return (
<Button
onPress={() => navigate('Settings')}
title="Link to Settings" />
);
}
}
class Settings extends React.Component {
static navigationOptions = {
title: 'Settings',
headerLeft: <Button title= "=" />
};
render() {
return <Text>Hello, Settings!</Text>;
}
}
const SimpleApp = StackNavigator({
Home: { screen: HomeScreen },
Settings: { screen: Settings}
});
AppRegistry.registerComponent('NavPractice', () => SimpleApp);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
これがあれば、ソリューションに非常に近いです。
static navigationOptions = {
title: 'Welcome',
headerLeft: <Button onPress={ WHAT GOES HERE?? } title= "=" />
};
ほとんど知られていない事実は、ナビゲーションオプションを返すnavigationOptions
accept関数です。その関数はいくつかの小道具を受け入れます、navigation
それらの1つ。これを知って、コードを少し調整してください。
static navigationOptions = function(props) {
return {
title: 'Welcome',
headerLeft: <Button onPress={() => props.navigation.navigate('DrawerOpen')} title= "=" />
}
};
同じリンクでこのリンクを確認してください https://github.com/react-community/react-navigation/issues/1539
チェックnavigationOptions
navigationOptions: ({ navigation }) => ({
title: 'Schedules', // Title to appear in status bar
headerLeft: <Icon name="menu" size={35}
onPress={ () => navigation.navigate('DrawerOpen') } />
から
const SchedulesStack = StackNavigator({
Schedules: {
screen: SchedulesScreen,
navigationOptions: ({ navigation }) => ({
title: 'Schedules', // Title to appear in status bar
headerLeft: <Icon name="menu" size={35} onPress={ () => navigation.navigate('DrawerOpen') } />
})
}
});
const Homestack = StackNavigator({
Home: {
Screen: Home
navigationOptions: ({ navigation }) => ({
title: 'Home', // Title to appear in status bar
headerLeft: <Icon name="menu" size={35} onPress={ () => navigation.navigate('DrawerOpen') } />
})
}
});
const Root = DrawerNavigator({
Home: {
screen: HomeStack,
navigationOptions: {
title: 'Home' // Text shown in left menu
}
},
Schedules: {
screen: SchedulesStack,
navigationOptions: {
title: 'Schedules', // Text shown in left menu
}
}
}
})
上記のコードでは、サイドバーにオプションを追加し、サイドバーメニューに移動しているようです。
//sidebar menu no.1
class HomeScreen extends React.Component {
static navigationOptions = {
title: 'Welcome',
headerLeft: <Button onPress={//action taken when option in the menu bar is clicked} title= "//the title of the screen where you will navigate and the sidebar menu lable" />
};
render() {
const { navigate } = this.props.navigation;
return (
<Button
onPress={() => navigate('Settings')}
title="Link to Settings" />
);
}
}
このようにして、できるだけ多くの引き出しオプションを作成できます。引き出しオプションを組み合わせる方法は次のとおりです。
//反応ナビゲーションはDrawerNavigator APIを提供します
const MyApp = DrawerNavigator({
Home: {
screenA: HomeScreen ,
},
Settings: {
screen: MySettingScreens,
},
});
ドロワーには、screenProps = {/ *というプロップも付属しています。このプロップは、次のように、props.screenProps * /}として画面コンポーネントとナビゲーションオプションに渡されます。
<MyApp
screenProps={/* this prop will get passed to the screen components and nav options as props.screenProps */}
/>
以下は、ナビゲーターが引き出しを開閉するために提供する反応する小道具です。
this.props.navigation.navigate('DrawerOpen'); // open drawer
this.props.navigation.navigate('DrawerClose'); // close drawer
次のように、あなたに応じて引き出しスタイルを設定することもできます:
引き出しの幅-引き出しの幅引き出しの位置-オプションは左または右です。デフォルトは左位置です。 contentComponent-デフォルトでは、ドロワーで使用できるスクロールビューはありません。ドロワーにscrollviewを追加するには、構成にcontentComponent
を追加する必要があります。 contentOptions-名前が示すように、これらはアクティブおよび非アクティブなドロワーアイテム(ラベル)に色を付けるために使用されます。
乾杯:)