react-native-导航前端小白兔

React Native入门教程

2018-06-12  本文已影响0人  2林子易2

环境安装

运行nrm add XXX XXX添加cnpm的源地址

运行

  1. 命令行进入项目主文件夹
  2. nrm use jinhui切换金汇源, npm install 安装依赖
  3. npm start运行项目
  4. 打开模拟器/真机连接服务

ES6基础

module的语法

解构赋值

扩展运算符

let obj = {...obj2}
let list = [...list1]

箭头函数

这里需要注意的是箭头函数的绑定this

常量定义

const TEST = '1'

参考资料
es6 扩展运算符 三个点
ECMAScript 6 入门

react基础

基本组件

import React from 'react';

export default class App extends React.Component {
  constructor(props) {
    super(props);
    // 初始化state
  }

  componentDidMount() {
    // 数据请求
  }

  componentWillReceiveProps() {
    // 在组件接收到一个新的 prop (更新后)时被调用。这个方法在初始化render时不会被调用
  }

  componentWillUnmount() {
    // 销毁长链接等本组件占用资源的操作
  }

  render() {
    // 注意render一个组件
    return (
      <div></div>
    )
  }
}

react生命周期

D4F18260-9BFE-4C82-895A-8B8E326B26FD

参考资料
React Native 中组件的生命周期
一张图学习 ES6 中的 React 生命周期与流程

props

组件的属性,可以为任意类型。主要的用途:

  1. 父组件向子组件传递数据
  2. 父组件向子组件传递调用函数,用来通知父组件消息。
  3. 用来作为子组件逻辑判断的标示,渲染的样式等
  4. children用来作为子组件的部分视图。

参考资料
Props(属性)

state

在constructor中初始化该组件的state,之后通过this.setState({})修改state。setState所做的修改是合并修改,意思是setState中的对象会和之前的state做合并。
每次修改完状态后,稍后会执行render重新渲染。

import React from 'react';

export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      count: 1
    }
  }

  add() {
    let { count } = this.state;
    count++;
    this.setState({
      count: count
    });
  }

  sub() {
    let { count } = this.state;
    count--;
    this.setState({
      count: count
    });
  }

  render() {
    return (
      <div>
        <div>{this.state.count}</div>
        <Button onClick={() => this.add()}>Add</Button>
        <Button onClick={() => this.sub()}>Sub</Button>
      </div>
    )
  }
}

渲染

react native

基本组件介绍

View

相当于html的div,块容器

Image

图片展示组件,常用属性如下:

应该封装一个Image组件,用来处理onError的错误和网络图片缓存

TouchableOpacity

用于写按钮的组件。常用属性如下:(此组件与TouchableHighlight的区别在于并没有额外的颜色变化,更适于一般场景)

TouchableHighlight

用于写按钮的组件,常用属性如下:

Text

显示文字的组件

TextInput

输入框组件

Modal

ScrollView

FlatList

Alert

StyleSheet

样式定义StyleSheet.create

Dimensions

获取屏幕尺寸
Dimensions.get('window').height
Dimensions.get('window').width

布局

flex布局一般都是对内容组件进行操作。

样式编写

<View style={styles.container}></View>
const styles = StyleSheet.create({
  container: {
    height: 100
  }
})

宽/高无单位,这里的1代表的是逻辑像素点

数据请求介绍

在services文件夹中进行定义,在其他页面引用调用。参照SpectrumService的编写。

路由编写

在app.js中定义路由<NavScene key="SpectrumSearch" component={GenealogySearch} renderRightButton = { props => <GenealogySearchBox preKey={props.preKey}/> }/>

导航栏在路由组件中定义

路由跳转

router文件定义了三个跳转方法,jump, jumpRNApp, jumpApp
jump代表正常的RN页面之间跳转
jumpRNApp代表RN页面之间需要跨路由,并且重新启动一个RN实例,一般用于首页跳转到其他RN页面
jumpApp代表跳转到原生App的页面

与App的交互

日志记录

通过引入services中的logger,调用其方法进行日志输出。方法有info, debug, warn, error四种,通过logger.error(tag, {})调用,tag为字符串。

详见logger

调试

  1. 通过console.log输出打印,在XCode/android studio控制台查看对应的输出。
  2. 通过Alert.alert弹框,进行调试。

rn基本命令介绍

切记不要修改将npm5安装依赖后的package.json文件提交。package.json的依赖记录中不应包含react-native,rn-nodeify,util三项。

项目结构

image.png

一般我们用index.js作为文件夹内所有文件的导出

上一篇下一篇

猜你喜欢

热点阅读