React Native簡介

React Native簡介

原文地址
這是翻譯,刪減的的reac native的官方簡介机杜,翻譯完之后椒拗,還是挺失望的蚀苛,槽點(diǎn)在于堵未,你需要學(xué)習(xí)更多東西。同時(shí)舞動js和oc兩種語言拙徽,腳踏web和native兩套庫诗宣,才能從容應(yīng)對開發(fā)中的挑戰(zhàn)。臉書此舉篮灼,不過是給web開發(fā)者向移動進(jìn)軍提供了橋梁,對于移動開發(fā)者娘荡,可有可無争群,未必有很大吸引力玉雾。

  • React Native - 使用REACT開發(fā)世界一流的原生應(yīng)用.
  • 使用JavaScript和React.
  • React Native專注于夸平臺的開發(fā)效率. 一次學(xué)習(xí), 夸平臺應(yīng)用.

開始搞React Native

原生 iOS 組件

可以直接使用iOS的原生組件, 這樣界面就會和平臺上得應(yīng)用們一致了.

var React = require(‘react-native’);
var { TabBarIOS, NavigatorIOS } = React;
var App = React.createClass({
  render: function() {
    return (
      <TabBarIOS>
        <TabBarIOS.Item title=“React Native” selected={true}>
          <NavigatorIOS initialRoute={{ title: ‘React Native’ }} />
        </TabBarIOS.Item>
      </TabBarIOS>
    );
  },
});

異步執(zhí)行

JavaScript代碼和原生平臺之間的操作都是異步的. 這樣解碼圖片, 往磁盤存儲文件, 測量文本大小, 計(jì)算布局等等都可以再后臺運(yùn)行而不阻塞界面. 這樣REACTIVE-NATIVE應(yīng)用運(yùn)行流暢, 響應(yīng)迅速. The communication is also fully serializable, 可以使用Chrome的Web調(diào)試工具進(jìn)行調(diào)試.

觸摸操作

React Native自建了一套響應(yīng)系統(tǒng)代替了iOS的響應(yīng)鏈系統(tǒng).

var React = require(‘react-native’);
var { ScrollView, TouchableHighlight, Text } = React;

var TouchDemo = React.createClass({
  render: function() {
    return (
      <ScrollView>
        <TouchableHighlight onPress={() => console.log(‘pressed’)}>
          <Text>Proper Touch Handling</Text>
        </TouchableHighlight>
      </ScrollView>
    );
  },
});

伸縮盒與樣式表

React-Native使用伸縮盒以及樣式進(jìn)行界面的布局和渲染

var React = require(‘react-native’);
var { Image, StyleSheet, Text, View } = React;

var ReactNative = React.createClass({
  render: function() {
    return (
      <View style={styles.row}>
        <Image
          source={{uri: ‘http://facebook.github.io/react/img/logo_og.png'}}
          style={styles.image}
        />
        <View style={styles.text}>
          <Text style={styles.title}>
            React Native
          </Text>
          <Text style={styles.subtitle}>
            Build high quality mobile apps using React
          </Text>
        </View>
      </View>
    );
  },
});
var styles = StyleSheet.create({
  row: { flexDirection: ‘row’, margin: 40 },
  image: { width: 40, height: 40, marginRight: 10 },
  text: { flex: 1, justifyContent: ‘center’},
  title: { fontSize: 11, fontWeight: ‘bold’ },
  subtitle: { fontSize: 10 },
});

其他

React Native 聚焦于iOS的界面開發(fā),其他方面幸冻,使用js等web通用技術(shù).

var React = require(‘react-native’);
var { Text } = React;

var GeoInfo = React.createClass({
  getInitialState: function() {
    return { position: ‘unknown’ };
  },
  componentDidMount: function() {
    navigator.geolocation.getCurrentPosition(
      (position) => this.setState({position}),
      (error) => console.error(error)
    );
  },
  render: function() {
    return (
      <Text>
        Position: {JSON.stringify(this.state.position)}
      </Text>
    );
  },
});

擴(kuò)展能力

可以將原生的代碼,導(dǎo)出給js用碑定。

RCT_EXPORT_MODULE();.

// Objective-C

#import “RCTBridgeModule.h”

@interface MyCustomModule : NSObject <RCTBridgeModule>
@end

@implementation MyCustomModule

RCT_EXPORT_MODULE();

// Available as NativeModules.MyCustomModule.processString
RCT_EXPORT_METHOD(processString:(NSString *)input callback:(RCTResponseSenderBlock)callback)
{
  callback(@[[input stringByReplacingOccurrencesOfString:@“Goodbye” withString:@“Hello”]]);
}
@end
// JavaScript

var React = require(‘react-native’);
var { NativeModules, Text } = React;

var Message = React.createClass({
  render: function() {
    getInitialState() {
      return { text: ‘Goodbye World.’ };
    },
    componentDidMount() {
      NativeModules.MyCustomModule.processString(this.state.text, (text) => {
        this.setState({text});
      });
    },
    return (
      <Text>{this.state.text}</Text>
    );
  },
});

Custom iOS views can be exposed by subclassing RCTViewManager, implementing a -(UIView *)view method, and exporting properties with the RCT_EXPORT_VIEW_PROPERTY macro. Then a simple JavaScript file connects the dots.

// Objective-C

#import “RCTViewManager.h”

@interface MyCustomViewManager : RCTViewManager
@end

@implementation MyCustomViewManager

- (UIView *)view
{
  return [[MyCustomView alloc] init];
}

RCT_EXPORT_VIEW_PROPERTY(myCustomProperty);
@end
// JavaScript

var React = require(‘react-native’);
var { requireNativeComponent } = React;

class MyCustomView extends React.Component {
  render() {
    return <NativeMyCustomView {…this.props} />;
  }
}
MyCustomView.propTypes = {
  myCustomProperty: React.PropTypes.oneOf([‘a(chǎn)’, ‘b’]),
};

var NativeMyCustomView = requireNativeComponent(‘MyCustomView’, MyCustomView);
module.exports = MyCustomView;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市普泡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌砰嘁,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宫静,死亡現(xiàn)場離奇詭異,居然都是意外死亡橘洞,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侯养,“玉大人逛揩,你說我怎么就攤上這事〕研梗” “怎么了炭懊?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長父阻。 經(jīng)常有香客問我加矛,道長,這世上最難降的妖魔是什么辑奈? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任胯究,我火速辦了婚禮,結(jié)果婚禮上净刮,老公的妹妹穿的比我還像新娘。我一直安慰自己弹灭,他們只是感情好穷吮,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著驾诈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪管引。 梳的紋絲不亂的頭發(fā)上闯两,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天漾狼,我揣著相機(jī)與錄音,去河邊找鬼似踱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛囚戚,可吹牛的內(nèi)容都是我干的狞洋。 我是一名探鬼主播绿店,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼假勿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恶导?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤删窒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蕉拢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晕换,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闸准,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年恕汇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了或辖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缺谴,死狀恐怖湿蛔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阳啥,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布斩狱,位于F島的核電站所踊,受9級特大地震影響秕岛,放射性物質(zhì)發(fā)生泄漏误证。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一愈捅、第九天 我趴在偏房一處隱蔽的房頂上張望改鲫。 院中可真熱鬧,春花似錦稽亏、人聲如沸缕题。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至墅诡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間说庭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工郑趁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刊驴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓寡润,卻偏偏與公主長得像捆憎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子悦穿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 一. React Native的由來 它是什么React Native是Facebook在React.js Con...
    我不叫奇奇閱讀 2,327評論 0 0
  • 前言 學(xué)習(xí)本系列內(nèi)容需要具備一定 HTML 開發(fā)基礎(chǔ)攻礼,沒有基礎(chǔ)的朋友可以先轉(zhuǎn)至 HTML快速入門(一) 學(xué)習(xí) 本人...
    珍此良辰閱讀 7,292評論 33 15
  • TextInput是一個(gè)允許用戶在應(yīng)用中通過鍵盤輸入文本的基本組件业踢。本組件的屬性提供了多種特性的配置栗柒,譬如自動完成...
    亭止閱讀 3,263評論 1 0
  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記知举,個(gè)人覺得該教程講解深入淺出瞬沦,比目前大...
    leonaxiong閱讀 2,843評論 1 18
  • 【編者按】本篇文章的作者是 Joyce Echessa——渥合數(shù)位服務(wù)創(chuàng)辦人,畢業(yè)于臺灣大學(xué)雇锡,近年來專注于協(xié)助客戶...
    OneAPM閱讀 1,959評論 1 11