【发布时间】:2019-11-20 10:13:33
【问题描述】:
我想在我的标题中添加一个搜索栏。我正在使用 react-navigation,并希望创建如下 2 张图片中的效果。当您按下搜索图标时,汉堡图标变成一个箭头图标,标题变成一个搜索字段。我曾尝试使用 navigationOptions 来完成此操作,但问题是它是静态的,并且在标题本身发生操作时无法更新。因此,为了试验我想要完成的是,当按下搜索图标时,汉堡包图标变成了一个箭头返回图标。谢谢!
var search = false;
const menuButton = navData => (
<HeaderButtons HeaderButtonComponent={HeaderButton}>
<Item
title="Menu"
iconName="ios-menu"
onPress={() => {
navData.navigation.toggleDrawer();
}}
/>
</HeaderButtons>
);
const goBackButton = navData => (
<HeaderButtons HeaderButtonComponent={HeaderButton}>
<Item
title="Menu"
iconName="ios-arrow-back"
onPress={() => {
search=false
}}
/>
</HeaderButtons>
);
MyScreen.navigationOptions = navData => {
return {
headerTitle: 'My title',
headerLeft: search ? goBackButton : menuButton(navData),
headerRight: (
<BorderlessButton
onPress={() => search=true}
style={{ marginRight: 15 }}>
<Ionicons
name="md-search"
size={Platform.OS === 'ios' ? 22 : 25}
/>
</BorderlessButton>
)
}
};
【问题讨论】:
-
您是否尝试过自定义标题?我通常禁用反应导航的标题并做了我自己的自定义标题
-
我是 React Native 的新手,所以我尝试尽可能多地使用现有组件。但是,没有简单的解决方法可以让它与 react-navigation 一起使用吗?构建它的方法是使用自定义标题?
-
是的,我会给出一个我在一段时间内实现的自定义标题
-
自定义标题是要走的路。我还建议学习 Redux,因此当您单击标题时,状态会发生变化,并且根据状态您的图标等会发生变化。这是一个可扩展的解决方案。
标签: reactjs react-native header searchbar