如何在反应本机的导航器中使用标签栏
how to use tabbar in navigator in react-native
我现在遇到了这个问题。
因为有些界面不使用tabbar,而且我需要在navigationbar中使用矢量图标,而不是使用react-native-tabbar-navigator,我尝试在Navigator中使用tabbar,如下所示。
render() {
return (
<Navigator
initialRoute={{name: 'LearningList', index: 0}}
renderScene={(route, navigator) =>
{
if (route.name == 'LearningList') {
return (
<LearningList navigator={navigator} />
);
}
if (route.name == 'MyLearning') {
return (
<View style={{ flex: 1, }}>
<MyLearning navigator={navigator} />
<TabBarIOS
tintColor="black"
barTintColor="#3abeff">
<Ionicon.TabBarItemIOS
style={ styles.tabBarItem }
selected={false}
iconName='ios-search'
title='Explorer'
navigator={navigator}
onPress={ this.changeTabSelection('LearningList') }>
<View></View>
</Ionicon.TabBarItemIOS>
<Ionicon.TabBarItemIOS
style={{ backgroundColor: 'green' }}
selected={true}
iconName='ios-list-outline'
title='My Learning'
navigator={navigator}
onPress = { this.changeTabSelection('MyLearning') }>
<View></View>
</Ionicon.TabBarItemIOS>
</TabBarIOS>
</View>
);
}
if (route.name == 'Schedule') {
return (
<Schedule navigator={navigator} learningID={ route.learningID } />
);
}
}
}
/>
);
}
但是,当我点击 TabBarItemIOS 按钮时,根本不会调用 onPress 事件,如果我点击 LearningList 页面中的编辑按钮,则会为所有 TabBarItemIOS 按钮调用 onPress 回调。
这里是LearningList.js下一个按钮内容。
const rightButtonConfig = {
title: 'Next >',
handler: () => {
this.props.navigator.push({
name: 'MyLearning'
});
}
};
所以,我希望知道在Navigator中tabbar的正确使用方法。
请帮帮我!!!
这是因为您正在调用该函数而不是传递函数引用。要做你想做的,你只需要箭头函数。例如替换:
onPress={ this.changeTabSelection('LearningList') }>
至
onPress={ () => this.changeTabSelection('LearningList') }>
我现在遇到了这个问题。
因为有些界面不使用tabbar,而且我需要在navigationbar中使用矢量图标,而不是使用react-native-tabbar-navigator,我尝试在Navigator中使用tabbar,如下所示。
render() {
return (
<Navigator
initialRoute={{name: 'LearningList', index: 0}}
renderScene={(route, navigator) =>
{
if (route.name == 'LearningList') {
return (
<LearningList navigator={navigator} />
);
}
if (route.name == 'MyLearning') {
return (
<View style={{ flex: 1, }}>
<MyLearning navigator={navigator} />
<TabBarIOS
tintColor="black"
barTintColor="#3abeff">
<Ionicon.TabBarItemIOS
style={ styles.tabBarItem }
selected={false}
iconName='ios-search'
title='Explorer'
navigator={navigator}
onPress={ this.changeTabSelection('LearningList') }>
<View></View>
</Ionicon.TabBarItemIOS>
<Ionicon.TabBarItemIOS
style={{ backgroundColor: 'green' }}
selected={true}
iconName='ios-list-outline'
title='My Learning'
navigator={navigator}
onPress = { this.changeTabSelection('MyLearning') }>
<View></View>
</Ionicon.TabBarItemIOS>
</TabBarIOS>
</View>
);
}
if (route.name == 'Schedule') {
return (
<Schedule navigator={navigator} learningID={ route.learningID } />
);
}
}
}
/>
);
}
但是,当我点击 TabBarItemIOS 按钮时,根本不会调用 onPress 事件,如果我点击 LearningList 页面中的编辑按钮,则会为所有 TabBarItemIOS 按钮调用 onPress 回调。
这里是LearningList.js下一个按钮内容。
const rightButtonConfig = {
title: 'Next >',
handler: () => {
this.props.navigator.push({
name: 'MyLearning'
});
}
};
所以,我希望知道在Navigator中tabbar的正确使用方法。
请帮帮我!!!
这是因为您正在调用该函数而不是传递函数引用。要做你想做的,你只需要箭头函数。例如替换:
onPress={ this.changeTabSelection('LearningList') }>
至
onPress={ () => this.changeTabSelection('LearningList') }>