我有一个想法,也许它可以解决你的问题,如果你只是使用原生基础 Header 作为你的自定义标题,并从 RNRF 隐藏导航栏,我有一个例子:
首先是定义路线
const App = () => {
return (
<Router>
<Scene key="root">
<Scene key="nav" component={MyContainer} title="Navigation" initial={true} hideNavBar>
<Scene key="main" component={ExampleContent} title="MainPage" />
</Scene>
</Scene>
</Router>
);
}
在父场景中使用hideNavBar
以隐藏 RNRF Navbar。然后制作自己的标题
class MyHeader extends Component{
render(){
return(
<Header>
<Left/>
<Body>
<Title>Header</Title>
</Body>
<Right />
</Header>
)
}
}
并为子场景制作内容组件
class ExampleContent extends Component{
render(){
return (
<Content>
<Text>This is some content</Text>
</Content>
)
}
}
之后,制作用于包装 Header 和 Content 的容器
class MyContainer extends Component{
render(){
const state = this.props.navigationState;
const children = state.children;
return(
<Container>
<MyHeader />
<DefaultRenderer navigationState={children[children.length - 1]} onNavigate={this.props.onNavigate} />
</Container>
)
}
}
Default Renderer
用于渲染子场景,因此您只需再次创建没有容器的内容
这是完整的源代码:
import React, { Component } from 'react';
import { Router, Scene, DefaultRenderer } from 'react-native-router-flux';
import { Container, Header, Content, Footer, Left, Right, Body, Title, Text } from "native-base";
class MyHeader extends Component{
render(){
return(
<Header>
<Left/>
<Body>
<Title>Header</Title>
</Body>
<Right />
</Header>
)
}
}
class ExampleContent extends Component{
render(){
return (
<Content>
<Text>This is some content</Text>
</Content>
)
}
}
class MyContainer extends Component{
render(){
const state = this.props.navigationState;
const children = state.children;
return(
<Container>
<MyHeader />
<DefaultRenderer navigationState={children[children.length - 1]} onNavigate={this.props.onNavigate} />
</Container>
)
}
}
const App = () => {
return (
<Router>
<Scene key="root">
<Scene key="nav" component={MyContainer} title="Navigation" initial={true} hideNavBar>
<Scene key="main" component={ExampleContent} title="MainPage" />
</Scene>
</Scene>
</Router>
);
}
export default App;
这是该示例代码的屏幕截图
我希望它可以成为您的一种解决方案,谢谢:)