RN react-navigation 的复杂使用
- js - page - Page0.js
 - js - page - Page1.js
 - js - page - Page2.js
 - app.js
 
index.js:
import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View,
    Image,
    Button,
} from 'react-native';
import Page0 from './js/page/Page0';
import Page2 from './js/page/Page2';
import { StackNavigator } from 'react-navigation';
const RootStack = StackNavigator(
    {
        Home: {
            screen: Page0,
        },
        Details: {
            screen: Page2,
        },
    },
    {
        initialRouteName: 'Home',
    }
);
export default class App extends Component<Props> {
    constructor(props) {
        super(props);
    }
  render() {
      return <RootStack />;
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
    image:{
      height:22,
        width:22,
        tintColor:'red'
    },
});
Page0.js:
import React, { Component } from 'react';
import {
    Platform,
    StyleSheet,
    Text,
    View,
    Image,
    Button,
} from 'react-native';
import TabNavigator from 'react-native-tab-navigator';
import Page1 from './Page1';
export default class ContentPage extends Component<Props> {
    constructor(props) {
        super(props);
        this.state={
            selectedTab:'tb_popular',
        }
    }
    render() {
        return (
            <TabNavigator>
                <TabNavigator.Item selected={this.state.selectedTab === 'tb_popular'}
                                   selectedTitleStyle={{color:'red'}}
                                   title='最热'
                                   renderIcon={() => <Image style={styles.image} source={require('../../res/images/ic_polular.png')} /> }
                                   renderSelectedIcon={()=><Image style={styles.image} source={require('../../res/images/ic_polular.png')}/>}
                                   onPress={()=>this.setState({selectedTab:'tb_popular'})}
                >
                    <Page1 navigation={this.props.navigation}/>
                </TabNavigator.Item>
            </TabNavigator>
        );
    }
}
const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
    },
    image:{
        height:22,
        width:22,
        tintColor:'red'
    },
});
module.exports = ContentPage;
Page1.js:
import React, { Component } from 'react';
import {
    Platform,
    StyleSheet,
    Text,
    View,
    Button,
} from 'react-native';
export default class ContentPage extends Component<Props> {
    constructor(props) {
        super(props);
    }
    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.text}>
                    Page1
                </Text>
                <Button
                    title="Go to Details"
                    onPress={() => {
                        this.props.navigation.navigate('Details', {content:'sss'})
                    }}
                />
            </View>
        );
    }
}
const styles = StyleSheet.create({
    container: {
        flex:1,
        backgroundColor: '#33eec6',
    },
    text:{
        fontSize: 60
    }
});
module.exports = ContentPage;
Page2:
import React, { Component } from 'react';
import {
    Platform,
    StyleSheet,
    Text,
    View,
    Button,
} from 'react-native';
export default class ContentPage extends Component<Props> {
    constructor(props) {
        super(props);
    }
    static navigationOptions = ({ navigation }) => ({
        header: null,
        title: `Chat with ${navigation.state.params.content}`,
    });
    render() {
        const { params } = this.props.navigation.state;
        return (
            <View>
                <Text>Details Screen with {params.content}</Text>
                <Button
                    title="Go to Details"
                    onPress={() => this.props.navigation.goBack()}
                />
            </View>
        );
    }
}
const styles = StyleSheet.create({
    container: {
        flex:1,
        backgroundColor: '#4444c6',
    },
    text:{
        fontSize: 60
    }
});
module.exports = ContentPage;