文档章节

React Native Tutorial摘要(一)

遥借东风
 遥借东风
发布于 2016/07/20 20:55
字数 764
阅读 15
收藏 0

###安装 在Mac上用homebrew安装非常简单:

brew install node
brew install watchman
npm install -g react-native-cli

当然前提也需要安装好Xcode和Android SDK及虚拟机。

然后就可以玩了,初始化一个project

react-native init AwesomeProject

这个时间稍微有点长,完成后可启动

cd AwesomeProject
react-native run-ios

官方向导
当然在按照官方向导时,安装Android Studio后,记得要使用SDK Manager和AVD Manager安装目标版本的SDK和模拟器。

###简单的用例 语法使用ES6标准,另外需要了解些React基本概念,如JSX、Component、state和props。

import React, { Component } from 'react';
import { AppRegistry, Text } from 'react-native';

class HelloWorldApp extends Component {
  render() {
    return (
      <Text>Hello world!</Text>
    );
  }
}

AppRegistry.registerComponent('HelloWorldApp', () => HelloWorldApp);

将上面代码贴入index.ios.js,然后在已经跑起来的模拟器中cmd+R就可以即时加载。

** 上面类似于在JS中写html的形式,在这里叫JSX。** ** 上面看起来像html的Text,它其实是一个Component。**

  • 要使用Component,需要先import。
  • AppRegistry只是为了告诉React Native谁是Root Component。

####Props

import React, { Component } from 'react';
import { AppRegistry, Image } from 'react-native';

class Bananas extends Component {
  render() {
    let pic = {
      uri: 'https://upload.wikimedia.org/wikipedia/commons/d/de/Bananavarieties.jpg'
    };
    return (
      <Image source={pic} style={{width: 193, height: 110}}/>
    );
  }
}

AppRegistry.registerComponent('Bananas', () => Bananas);

以像html的attribute的形式注入组件中。

在我看来,它是抽出一些特性出来支持定制,让Component可以容易复用。 如:

import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

class Greeting extends Component {
  render() {
    return (
      <Text>Hello {this.props.name}!</Text>
    );
  }
}

class LotsOfGreetings extends Component {
  render() {
    return (
      <View style={{alignItems: 'center'}}>
        <Greeting name='Rexxar' />
        <Greeting name='Jaina' />
        <Greeting name='Valeera' />
      </View>
    );
  }
}

AppRegistry.registerComponent('LotsOfGreetings', () => LotsOfGreetings);

####state state也是Component内部带有一种模型,与props不同,它的目的是为了支持值变化。

  • 在构造器中初始化它,然后当想change的时候调用setState重新设置。
  • 真实场景可能是,当一条请求返回数据回调时,或者用户输入数据时等。
  • 官方有提到Redux,推荐使用Redux——一个state容器,去控制data flow。那样不会用太多机会直接调用setStats方法。
import React, { Component } from 'react';
import { AppRegistry, Text, View } from 'react-native';

class Blink extends Component {
  constructor(props) {
    super(props);
    this.state = {showText: true};

    // Toggle the state every second
    setInterval(() => {
      this.setState({ showText: !this.state.showText });
    }, 1000);
  }

  render() {
    let display = this.state.showText ? this.props.text : ' ';
    return (
      <Text>{display}</Text>
    );
  }
}

class BlinkApp extends Component {
  render() {
    return (
      <View>
        <Blink text='I love to blink' />
        <Blink text='Yes blinking is so great' />
        <Blink text='Why did they ever take this out of HTML' />
        <Blink text='Look at me look at me look at me' />
      </View>
    );
  }
}

AppRegistry.registerComponent('BlinkApp', () => BlinkApp);

State works the same way as it does in React, so for more details on handling state, you can look at the React.Component API.

####Style React组件中可以使用类CSS一样去控制样式,可以将background-color这样的使用backgroundColor去对照使用。 Style是一个命名为style的props,所有的Core component都支持它。

import React, { Component } from 'react';
import { AppRegistry, StyleSheet, Text, View } from 'react-native';

class LotsOfStyles extends Component {
  render() {
    return (
      <View>
        <Text style={styles.red}>just red</Text>
        <Text style={styles.bigblue}>just bigblue</Text>
        <Text style={[styles.bigblue, styles.red]}>bigblue, then red</Text>
        <Text style={[styles.red, styles.bigblue]}>red, then bigblue</Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  bigblue: {
    color: 'blue',
    fontWeight: 'bold',
    fontSize: 30,
  },
  red: {
    color: 'red',
  },
});

AppRegistry.registerComponent('LotsOfStyles', () => LotsOfStyles);

**style可以接受数组,如_[styles.bigblue, styles.red]_。相同的样式,后面的将覆盖前面的。 **StyleSheet.create中,每一个对象如一个class。

© 著作权归作者所有

共有 人打赏支持
遥借东风
粉丝 1
博文 34
码字总数 24176
作品 0
武汉
高级程序员
私信 提问
React Native Tutorial摘要(二)

组件的宽和高 基本跟CSS一样使用,但要注意是放在style中的对象中,即{{}}。~~~import React, { Component } from 'react';import { AppRegistry, View } from 'react-native'; class Fixed......

遥借东风
2016/07/23
10
0
React Native 相关资源汇总

原文地址:https://github.com/jondot/awesome-react-native 文章 React Native: Bringing modern web techniques to mobile First impressions using React Native React Packager README.......

OSC编辑部
2015/07/21
1K
1
ECharts/echarts

ECharts ECharts is a free, powerful charting and visualization library offering an easy way of adding intuitive, interactive, and highly customizable charts to your commercial p......

ECharts
2017/04/24
0
0
整理了一份React-Native学习指南

自己在学习React-Native过程中整理的一份学习指南,包含 教程、开源app和资源网站等,还在不断更新中。欢迎pull requests! React-Native学习指南 本指南汇集React-Native各类学习资源,给大...

太阳黑子
2016/11/03
34
0
React Native 学习指南

本指南汇集React-Native各类学习资源,给大家提供便利。指南正在不断的更新,大家有好的资源欢迎Pull Requests! 原文地址:https://github.com/ele828/react-native-guide 同时还有Awesome...

OSC编辑部
2015/07/09
5K
9

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的Async I/O

序 本文主要研究一下flink的Async I/O 实例 // This example implements the asynchronous request and callback with Futures that have the// interface of Java 8's futures (which is t......

go4it
15分钟前
0
0
一文详解微服务架构的数据设计

微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面。 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮...

java菜分享
25分钟前
2
0
Java并发编程之美读书笔记-并发编程基础1

线程 进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,比如idea运行代码时的jvm是一个进程,但是CPU资源比较特殊,它是被分配到线程的,线程是进程的一个执行路...

hensemlee
38分钟前
1
0
【剑指offer纪念版】--10 进制1的个数

10. 题目 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。 解题思路   把一个整数减去1,再和原整...

细节探索者
53分钟前
2
0
本科毕业平均年薪 30 万!经济寒冬挡不住 AI 人才的火热!

互联网行业遭遇寒冬,企业纷纷裁员缩招,而 BAT 和硅谷明星公司对 AI 人才的投入却并不见放缓。为争夺相关人才,给应届毕业生开出的平均年薪高达 30 万。 而 TensorFlow 作为当下最流行的深度...

AI女神
59分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部