使用 react-navigation + axios + redux新建react-native项目

新建react native项目

  • 搭建开发环境
  • 使用React Navigation实现页面跳转
  • 使用axios网络库
  • 使用redux管理数据状态
    • 基本概念:
    • 其他函数
    • 使用connect装饰器
    • redux工作流程
    • 相关代码:

搭建开发环境

参考react native 官网搭建开发环境:
https://reactnative.cn/docs/getting-started.html
新建项目:

react-native init RNApp

然后打开 ios/RNApp.xcodeproj ,在xcode中运行项目。
编译失败:

解决办法:
cd RNApp/node_modules/react-native/third-party/glog-0.3.4
然后执行 ./configure, 如下所示:

然后再次运行,又遇到另一个问题

解决办法:
找到这个文件,删除再添加。

重新编译运行就可以了。app的入口是index.js文件:

import { AppRegistry } from 'react-native';
import App from './App';
AppRegistry.registerComponent('RNApp', () => App);

在index.js中,将App注册为项目的根组件,运行项目后首先看到的是App.js渲染出的页面。

接下来加入路由跳转,网络请求和redux管理数据。
总的文件目录结构如下:

使用React Navigation实现页面跳转

搭建好一个新项目之后,要使用导航实现页面跳转,可以使用RN官方推荐的react-navigation库。文档链接:https://reactnavigation.org/docs/en/getting-started.html
首先安装navigation包:

yarn add react-navigation

为了项目结构看起来更清楚,在项目的根目录下建一个app文件夹,然后在里面建一个index.js文件作为 APP 的根组件。同时将index中注册的组件改成app下的index:

import { AppRegistry } from 'react-native';
import App from './app/index';AppRegistry.registerComponent('RNApp', () => App);

在app中新建一个pages文件夹,用来放APP的页面,然后在pages中新建两个页面,分别为MainScreen.jsDetailScreen.js
在MainScreen中放一个button:

  <ButtononPress={this.gotDetail}title="进入详情"color="#841584"/>

点击进入DetailScreen页面,详情中放一个text:

  <Text>DetailScreen</Text>

然后在app中新建一个route.js文件,对路由进行配置:

import { createStackNavigator } from 'react-navigation';
import MainSreen from './pages/MainSreen';
import DetailScreen from './pages/DetailScreen';const RootStack = createStackNavigator({Home: MainSreen,Details: DetailScreen,},{initialRouteName: 'Home',}
);export default RootStack;

在route.js中使用createStackNavigator创建了一个路由栈,在路由栈配置了Home和Details两个路由,初始路由是Home。
在app/index.js中调用RootStack组件,

import React, { Component } from 'react';
import { View } from 'react-native';
import RootStack from './router';export default class App extends Component {render() {return (<View style={{ flex: 1 }}><RootStack /></View>);}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部