若是学习止步于 hello world
, 那么人生也太没意思了。此次要作一个看起来真实的应用。多添加几个页面,让他们能够交互,动起来。javascript
react-native
官方推荐使用 react-navigation
做路由管理,下面我将尝试使用他。java
根目录下面创建 pages
文件夹,并在里面创建 home.js
和 /user/index.js
两个文件,接下来就能够在这个两个视图之间进行跳转了react
mkdir pages cd pages touch home.js mkdir user cd user touch index.js
安装ios
yarn add react-navigation
引入react-native
// app.js import { createStackNavigator } from 'react-navigation';
修改 app.js
, 使用 createStackNavigator
建立堆栈卡片式的导航。bash
import { createStackNavigator } from 'react-navigation'; import Home from './pages/home.js'; import Profile from './pages/user/index.js'; const App = createStackNavigator({ Home: { screen: Home }, Profile: { screen: Profile }, }); export default App
这里创建了两个视图的导航, yarn ios
试一下,报错了,缘由是新建的2个视图面仍是空的,没有返回一个 react compontent
。如今关掉服务,在里面写2个组件。app
在两个页面里面随便写一些东西,navigationOptions
是路由的配置项,设置后会自动在视图顶部生成一个原生的导航组件。学习
// home.js import ...; export default class Home extends React.Component { static navigationOptions = { title: '首页', }; render() { return (...); } } const styles = StyleSheet.create(...);
// user/index.js import ...; export default class Home extends React.Component { static navigationOptions = { title: '我的中心', }; render() { return (...); } } const styles = StyleSheet.create(...);
从一个页面跳转到另外一个页面,须要调用 navigate
方法, 点击 Button
, 会在当前视图上叠加 Profile
视图。点击 Profile
上边的返回按钮,会自动返回到 Home
视图。this
// home.js import ...; export default class Home extends React.Component { static navigationOptions = { title: '首页', }; render() { const { navigate } = this.props.navigation; return ( <Button title="去我的中心" onPress={() => navigate('Profile', { name: 'Jane' }) } /> ); } } const styles = StyleSheet.create(...);