RN7_React-Native實戰(zhàn)(1)
參考:http://www.open-open.com/lib/view/open1451012403948.html
按照他的搭下來似乎沒什么問題。
在里面幾個關鍵點:
1、下載的AwesomPRoject沒有l(wèi)ocal配置文件,需要在android項目里面拽一個過來。
2、我們的手機和筆記本需要連接到同一個網(wǎng)絡中
3、我們需要先用cmd打開react的調(diào)試服務

然后再去打開網(wǎng)頁http://localhost:8081/index.android.bundle?platform=android
看看是否服務已經(jīng)開啟。開啟成功如下:

4、去運行項目。react-native run-android

5、出現(xiàn)連接不上js bundle的情況

這是后我們要去搖一搖手機,然后去dev setting中去設置host的ip和端口地址
Eg:192.168.2.12:8081.
然后再去reload就可以了。
在cmd中執(zhí)行:
npm install -g react-native-cli
然后我們就可以
參考:
react官網(wǎng):http://facebook.github.io/react-native/docs/network.html#content
厲害的中文翻譯:http://reactnative.cn/docs/0.41/network.html#content
實戰(zhàn)前準備:從這里開始我們就依照react-native官網(wǎng)中的教學開始進行實戰(zhàn)!我用npm init新建項目老失敗,所以索性就用官網(wǎng)給的那個AwesomeProject項目作為實戰(zhàn)的項目進行代碼編寫和運行。至于編譯器用的是Atom。在Atom上寫代碼,然后用實時用真機去看效果。具體就是這樣的。那開始吧.
他是組件里面的屬性參數(shù)。

分析:
ES6 中, 除了var還多了兩種聲明, 一是 const, 一是 let。
const :聲明一個常量.
Let:聲明一個變量.
var :聲明的作用域為函數(shù)內(nèi)。
Var有個bug:
作用域是函數(shù)體的全部:
for(var i=0;i<10;i++){
var a = 'a';
}
console.log(a);
明明已經(jīng)跳出 for 循環(huán)了,卻還可以訪問到 for 循環(huán)內(nèi)定義的變量 a ,甚至連 i 都可以被放訪問到。
而let則解決了這個bug,let聲明的變量的作用域只是外層塊,而不是整個外層函數(shù)。


分析:
這里我們創(chuàng)建了另外一個組件Greeting,Greeting組件所呈現(xiàn)的效果是一個text標簽。項目里面通過AppRegistry.registerComponent來確定組件的調(diào)用入口。
Props是通過父控件設置的一個固定的變量,而state是一個可變的數(shù)據(jù)。




我們可以通過名為style的組件屬性進行屬性的封裝。

這個和andori中g(shù)ravity即權(quán)重值相似。


這是style提供了考慮到不同屏幕大小的布局,提供了flex盒子模型來對立面的內(nèi)容進行設置。







這個控件允許用戶輸入文字,當內(nèi)容改變的時候會調(diào)用onChangeText方法 ,當提交的時候會調(diào)用onSubmitEditing 方法。


分析:
這里我們在內(nèi)容改變的時候去調(diào)用onchangText的回調(diào)方法,作為state來說,使用this.setState方法,會觸發(fā)異步修改狀態(tài),狀態(tài)改變的同時,會重新執(zhí)行一次willUpdate,render等流程。
這里的scrollView和安卓的使用差不多的樣子。


 
通過它來實現(xiàn)網(wǎng)絡的URL數(shù)據(jù)的訪問。

參數(shù)1:訪問的URL;
參數(shù)2:定制HTTP請求一些參數(shù)。
注意:網(wǎng)絡請求天然是一種異步操作(同樣的還有asyncstorage,無論在語法層面怎么折騰,它們的異步本質(zhì)是無法變更的。)
Fetch api的使用:

分析:
首先是構(gòu)造請求的URL,然后將URL傳遞給全局的fetch()方法,它會立刻返回一個Promise,當Promise被通過,它會返回一個Response對象,通過該對象的json()方法可以將結(jié)果作為JSON對象返回。 response.json()同樣會返回一個Promise對象,因此在我們的例子中可以繼續(xù)鏈接一個then()方法。
代表了未來某個將要發(fā)生的事件(通常是一個異步操作)。它可以將異步操作以同步操作的流程表達出來,避免了層層嵌套的回調(diào)函數(shù)。

從你添加第二個頁面開始,就得考慮如何管理多個頁面間的跳轉(zhuǎn)了。
導航器正是為此而生。它可以管理多個頁面間的跳轉(zhuǎn),也包含了一些常見的過渡動畫,包括水平翻頁、垂直彈出等等。
場景簡單來說其實就是一個全屏的React組件。
一個簡單的場景:

導入:

首先要做的是渲染一個Navigator組件,然后通過此組件的renderScene屬性方法來渲染其他場景。
這個有點復雜:參看http://bbs.reactnative.cn/topic/20/%E6%96%B0%E6%89%8B%E7%90%86%E8%A7%A3navigator%E7%9A%84%E6%95%99%E7%A8%8B/2
比較好理解。
1、

剛下載的react項目在node_modules中沒有相關配置文件,需要在目錄下npm install下。
在npm install時又報錯了:沒有找到git,應該是環(huán)境變量里面沒有配置git,于是去環(huán)境變量中配置git:

最后再去npm install就搞定了。
新聞熱點
疑難解答