Skip to content

Commit 1cb84e2

Browse files
committed
切换tab的同时,修改导航栏上的title
refs:react-native-simple-router-community/react-native-simple-router#133
1 parent 1086fc2 commit 1cb84e2

File tree

3 files changed

+53
-7
lines changed

3 files changed

+53
-7
lines changed

MainPage.js

+17-6
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,28 @@ class MainPage extends Component {
1818
constructor(props) {
1919
super(props);
2020
this.state = {
21-
selectedTab:'tab1' // 默认显示tab1标签
21+
selectedTab:'tab1', // 默认显示tab1标签
2222
};
2323

2424
this.jumpPage = this.jumpPage.bind(this);
25+
this.changeTab = this.changeTab.bind(this);
26+
}
27+
28+
componentDidMount() {
29+
this.changeTab('tab1','TabPage1');
2530
}
2631

2732
// 页面跳转('方法','页面信息')
2833
jumpPage(method, routerData){
2934
this.props[method](routerData);
3035
}
3136

37+
// 切换Tab页(当前tab名,切换到当前tab时导航栏上的title)
38+
changeTab(currentTab, titleText){
39+
this.setState({ selectedTab: currentTab });
40+
this.props.setTitleProps({name: titleText});
41+
}
42+
3243
render() {
3344
return (
3445
<View style={{flex: 1}}>
@@ -38,25 +49,25 @@ class MainPage extends Component {
3849
title="Tab1"
3950
renderIcon={() => <Image source={require('./res/icon_bottomtag_market_n.png')} style={styles.tabImage} />}
4051
renderSelectedIcon={() => <Image source={require('./res/icon_bottomtag_market_s.png')} style={styles.tabImage} />}
41-
onPress={() => this.setState({ selectedTab: 'tab1' })}>
42-
<TabPage1 routerCallback={this.jumpPage} />
52+
onPress={() => this.changeTab('tab1','TabPage1')}>
53+
<TabPage1 routerCallback={this.jumpPage} changeNavTitle={this.changeTitle} />
4354
</TabNavigator.Item>
4455

4556
<TabNavigator.Item
4657
selected={this.state.selectedTab === 'tab2'}
4758
title="Tab2"
4859
renderIcon={() => <Image source={require('./res/icon_bottomtag_home_n.png')} style={styles.tabImage} />}
4960
renderSelectedIcon={() => <Image source={require('./res/icon_bottomtag_home_s.png')} style={styles.tabImage} />}
50-
onPress={() => this.setState({ selectedTab: 'tab2' })}>
51-
<TabPage2 routerCallback={this.jumpPage} />
61+
onPress={() => this.changeTab('tab2','TabPage2')}>
62+
<TabPage2 routerCallback={this.jumpPage} changeNavTitle={this.changeTitle} />
5263
</TabNavigator.Item>
5364

5465
<TabNavigator.Item
5566
selected={this.state.selectedTab === 'tab3'}
5667
title="Tab3"
5768
renderIcon={() => <Image source={require('./res/icon_bottomtag_home_n.png')} style={styles.tabImage} />}
5869
renderSelectedIcon={() => <Image source={require('./res/icon_bottomtag_home_s.png')} style={styles.tabImage} />}
59-
onPress={() => this.setState({ selectedTab: 'tab3' })}>
70+
onPress={() => this.changeTab('tab3','TabPage3')}>
6071
<TabPage3 routerCallback={this.jumpPage} />
6172
</TabNavigator.Item>
6273
</TabNavigator>

components/NavTitle.js

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* Created by Administrator on 2016/9/19.
3+
*/
4+
import React, {Component} from 'react';
5+
import {
6+
View,
7+
Text,
8+
StyleSheet,
9+
} from 'react-native';
10+
11+
export default class NavTitle extends React.Component {
12+
13+
constructor(props) {
14+
super(props);
15+
}
16+
17+
render() {
18+
return (<View><Text style={styles.navbarText}>{this.props.name}</Text></View>);
19+
}
20+
}
21+
22+
const styles = StyleSheet.create({
23+
navbarText: {
24+
color: 'white',
25+
fontSize: 17,
26+
margin: 10,
27+
marginTop: 0,
28+
marginBottom: 0,
29+
fontWeight: '600',
30+
textAlign: 'center',
31+
alignItems: 'center',
32+
},
33+
});

index.android.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ import {
66

77
import Router from 'react-native-simple-router';
88
import MainPage from './MainPage';
9-
import NavBackButton from './components/icons/NavBackButton.js'
9+
import NavBackButton from './components/icons/NavBackButton.js';
10+
import NavTitle from './components/NavTitle.js';
1011

1112
// 声明第一个页面
1213
const firstRoute = {
1314
name: 'RNCodeSnippet',
1415
component: MainPage,
16+
titleComponent: NavTitle
1517
};
1618

1719
class ReactNativeCodeSnippet extends Component {

0 commit comments

Comments
 (0)