React Native (一):基礎(chǔ)

React Native (一):基礎(chǔ)
React Native (二):StatusBar 、 NavigationBar 與 TabBar
React Native (三):自定義視圖
React Native (四):加載新聞列表
React Native (五):上下拉刷新加載
React Native (六):加載所有分類與詳情頁

最近剛完成一個 React Native 的項目鲫寄,踩了無數(shù)坑缸匪,去年折騰過幾周槽驶,后來因為有兩個 iOS 項目就沒有再折騰昆婿,當(dāng)時想要寫一個主文件,分別給 AndroidiOS 引用肾砂,但是弄了好久也不會弄远剩,也下載了 f8app 看了扣溺,不過完全看不懂,就這樣放棄了瓜晤。

今年 3 月中旬正好公司有個項目只需要前端锥余,而且公司沒有 Android 開發(fā),也想弄混合開發(fā)痢掠,于是正好我拿這個項目去練手驱犹。

從上面的描述也看出來我是一個 iOS 開發(fā),對于有移動開發(fā)基礎(chǔ)的人來說做 React Native 開發(fā)還是比較好上手的足画,前端的話更容易着绷,只是剛開始入門比較費勁,也找不到個能問的人锌云。總的下來我的建議還是如果卡在某個地方很久很煩躁不想繼續(xù)學(xué)了吁脱,那么放一放桑涎,放幾天或者一兩周,再繼續(xù)學(xué)兼贡,不要輕易放棄攻冷,入門后就輕松多了。

1.說明

這系列文章主要還是針對有編程經(jīng)驗的開發(fā)者遍希,起碼掌握一門主流的編程語言等曼。

開發(fā)平臺: Mac OS

IDE: WebStorm

這里我并不會很詳細的一步一步的講解,詳細的教程可以看官方教程凿蒜,這里主要是記錄一些我在學(xué)習(xí)過程中遇到的疑難雜癥禁谦,如果你碰到了或許可以幫你一把。

2.基礎(chǔ)

首先既然看這個文章废封,那么默認你已經(jīng)知道什么是 React Native 以及是干什么的州泊,還有你需要會一些 JavaScript ,如果你還不會 JavaScript漂洋,那么推薦 廖雪峰老師JavaScript教程阮一峰老師ECMAScript 6 入門遥皂。

官方文檔永遠是必看的力喷,對于初學(xué)者來說不會的先去官方文檔找。React Native中文網(wǎng) 對于英文不好的同學(xué)來說是首選演训,比如我自己弟孟。

有問題也可以去 React NativeGitHub地址issues 找。

3.搭建開發(fā)環(huán)境

這部分比較簡單样悟,按著 官方教程 搭建即可拂募,但是在運行命令的時候可能會出各種問題,這個時候只能靠 BaiduGoogle 了乌奇,我是一次成功的没讲,所以也不知道會有什么問題,這里也不做過多說明了礁苗。

希望沒人在這一步就放棄了爬凑。

4.iOS 和 Android 調(diào)用統(tǒng)一資源

新創(chuàng)建的項目 iOSAndroid 代碼是分開的,分別在 index.ios.jsindex.android.js 中试伙,這是兩個平臺的入口嘁信。

頂部的各種 import 是引入的各種資源:

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

接下來是 React 的語法,創(chuàng)建了一些視圖:

export default class ReactNative1 extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to React Native!
        </Text>
        <Text style={styles.instructions}>
          To get started, edit index.ios.js
        </Text>
        <Text style={styles.instructions}>
          Press Cmd+R to reload,{'\n'}
          Cmd+D or shake for dev menu
        </Text>
      </View>
    );
  }
}

然后是布局的代碼:

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

最后是注冊疏叨,每個平臺只需要注冊一次:

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

上面的那一大堆不用去管潘靖,我們就從這個方法入手,這個方法傳入了 2 個參數(shù)蚤蔓,第一個是 App 的標(biāo)志卦溢,這個你們應(yīng)該也明白不能隨便改,第二個參數(shù)是一個匿名方法秀又,調(diào)用這個方法會返回 ReactNative1 单寂,就是上面的 React 創(chuàng)建的類,那么要讓 iOSAndroid 引用同一個資源吐辙,只需要這里返回給同一個類即可宣决。

新創(chuàng)建一個文件夾 App 或者隨便啥,我們寫的所有 JS 文件都放這里昏苏,方便管理尊沸。

然后在 App 內(nèi)創(chuàng)建一個 setup.js,這時候目錄看起來是這樣子:

目錄
目錄

然后在把 index.ios.jsimport 贤惯、 React布局 部分的內(nèi)容復(fù)制過來洼专,然后加入兩句代碼,現(xiàn)在 setup.js 文件是這樣的:

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


function setup(): ReactClass<{}> {

    //這里做一些注冊第三方等App初始化需要的操作

    return Root
}

class Root extends React.Component {
    render() {
        return (
            <View style={styles.container}>
                <Text style={styles.welcome}>
                    Welcome to React Native!
                </Text>
                <Text style={styles.instructions}>
                    To get started, edit index.android.js
                </Text>
                <Text style={styles.instructions}>
                    Double tap R on your keyboard to reload,{'\n'}
                    Shake or press menu button for dev menu
                </Text>
            </View>
        );
    }
}


const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
    },
    welcome: {
        fontSize: 20,
        textAlign: 'center',
        margin: 10,
    },
    instructions: {
        textAlign: 'center',
        color: '#333333',
        marginBottom: 5,
    },
});


module.exports = setup

我這里是直接導(dǎo)入了 import React from 'react' 救巷,那么在創(chuàng)建 React類 的時候就需要 extends React.Component 壶熏,我是習(xí)慣這種寫法,如果你覺得官方的寫法比較好浦译,那么就按著官方的寫就行棒假。

然后修改 index.ios.jsindex.android.js ,修改成一模一樣:

import {
    AppRegistry,
} from 'react-native';

import setup from './App/setup'

AppRegistry.registerComponent('ReactNative1', setup);

如果已經(jīng)在運行溯职,那么 iOS模擬器command + R 刷新,Android模擬器 雙擊 R 刷新帽哑。

如果沒有在運行那么運行 react-native run-iosreact-native run-android 查看效果谜酒。

如果運行的時候遇見這個錯誤:

firstError
firstError

那么需要關(guān)閉 react-native 啟動的服務(wù),重新啟動妻枕。

iterm
iterm

如果一切正常僻族,那么嘗試修改 setup.jsText 標(biāo)簽中的文字,刷新 iOSAndroid 看看效果屡谐。

如果你堅持到了這里述么,那么恭喜你已經(jīng)初步掌握了 react native

示例項目地址

參考鏈接

f8app

React Native中文網(wǎng)

https://github.com/facebook/react-native/issues/6613

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末愕掏,一起剝皮案震驚了整個濱河市度秘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饵撑,老刑警劉巖剑梳,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異滑潘,居然都是意外死亡垢乙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門语卤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來追逮,“玉大人,你說我怎么就攤上這事粹舵⊙蛞迹” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵齐婴,是天一觀的道長。 經(jīng)常有香客問我稠茂,道長柠偶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任睬关,我火速辦了婚禮诱担,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘电爹。我一直安慰自己蔫仙,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布丐箩。 她就那樣靜靜地躺著摇邦,像睡著了一般恤煞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上施籍,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天居扒,我揣著相機與錄音,去河邊找鬼丑慎。 笑死喜喂,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的竿裂。 我是一名探鬼主播玉吁,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腻异!你這毒婦竟也來了进副?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤捂掰,失蹤者是張志新(化名)和其女友劉穎敢会,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體这嚣,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鸥昏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了姐帚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吏垮。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖罐旗,靈堂內(nèi)的尸體忽然破棺而出膳汪,到底是詐尸還是另有隱情,我是刑警寧澤九秀,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布遗嗽,位于F島的核電站,受9級特大地震影響鼓蜒,放射性物質(zhì)發(fā)生泄漏痹换。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一都弹、第九天 我趴在偏房一處隱蔽的房頂上張望娇豫。 院中可真熱鬧,春花似錦畅厢、人聲如沸冯痢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浦楣。三九已至袖肥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間椒振,已是汗流浹背昭伸。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留澎迎,地道東北人庐杨。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像夹供,于是被迫代替她去往敵國和親灵份。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

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