React Native 最基本的入門知識

Learn once, write anywhere: Build mobile apps with React.

1.新建RN項目:

$ react-native init MyProject(項目名稱)

確保項目下有node_modules后,運行$react-native run-android來運行項目男娄。

2.RN基本入門及知識點

2.1入口

Android的入口文件是根目錄下的index.android.js右冻,Ios的入口文件是根目錄下的index.ios.js.

2.2 AppRegistry是JS運行所有React Native應(yīng)用的入口。應(yīng)用的根組件應(yīng)當通過AppRegistry.registerComponent方法注冊自己,然后原生系統(tǒng)才可以加載應(yīng)用的代碼包并且在啟動完成之后通過調(diào)用AppRegistry.runApplication來真正運行應(yīng)用澜驮。

eg: ?AppRegistry.registerComponent('Helloworld', () => TestComponent);

其中Helloworld是你的項目名稱,TestComponent是你的入口組件的名稱。

2.3基本組件

常用的基本組件有Button, View, Image, ListVie碰逸,Textw等等,這些組件的引入方法是:import {Button阔加,View, Image, ListView} from‘’react-native.

使用方法:

hello world

2.4組件顯示的布局(flexBox布局詳解)

我們在React Native中使用flexbox規(guī)則來指定某個組件的子元素的布局花竞。Flexbox可以在不同屏幕尺寸上提供一致的布局結(jié)構(gòu)。

在組件中的style中指定flexDirection可以決定布局的主軸,子元素是按著水平軸(row)排列约急,還是數(shù)值軸(colum,默認值)排列苗分。flex:定義了元素的可伸縮能力厌蔽。默認值是0

在組件中的style中指定justifyContent可以決定子元素沿著主軸的排列方式∷ぱⅲ靠近起始端:flex-start(默認)奴饮。 靠近末端:flex-end。 中心:center择浊。space-around和space-between戴卜。

在組件的style中指定alignItems可以決定其子元素沿著次軸(與主軸垂直的軸,比如若主軸方向為row琢岩,則次軸方向為column)的排列方式投剥。

對應(yīng)的這些可選項有:flex-start(靠近次軸起始端)、center(次軸中心)担孔、flex-end(次軸末尾段)以及stretch(元素被拉伸以適應(yīng)容器)江锨。

注意:要使stretch選項生效的話,子元素在次軸方向上不能有固定的尺寸糕篇。

使用方法(完整RN Demo):


2.5自定義組件

自定義組件需要繼承React.Component啄育。組件渲染的方法是render()。最基本的用法是:

class MyComponent extends React.Component{

render() { ??//這個方法是必須的

Return(); ?//返回要顯示的view最外層只能有一個view

}

}

導(dǎo)出組件:export default(default只能使用一次)MyComponent

導(dǎo)入組件:import MyComponent from‘./XX.js’

export命令規(guī)定的是對外的接口拌消,必須與模塊內(nèi)部的變量建立一一對應(yīng)關(guān)系挑豌。export,import可以處在任何位置墩崩,但必須是在模塊頂層氓英。 使用export default時import后不加{}。 若使用export時泰鸡,import后需要加{}债蓝。

2.6自定義樣式:

const styles = StyleSheet.create({

XXX,

XXX

});

1.props和state的使用及區(qū)別

Props:大多數(shù)組件在創(chuàng)建時就可以使用各種參數(shù)來進行定制。用于定制的這些參數(shù)就稱為props(屬性)盛龄。

以常見的基礎(chǔ)組件Image為例饰迹,在創(chuàng)建一個圖片時,可以傳入一個名為source的prop來指定要顯示的圖片的地址余舶,以及使用名為style的prop來控制其尺寸啊鸭。

自定義的組件也可以使用props。通過在不同的場景使用不同的屬性定制匿值,可以盡量提高自定義組件的復(fù)用范疇赠制。只需在render函數(shù)中引用this.props,然后按需處理即可。

組件A ->組件B钟些。 組件A中傳遞的常量(如name)烟号,在組件B中可以通過this.props.name來得到。無論是function還是class都不能修改自身的props政恍。

State:我們使用兩種數(shù)據(jù)來控制一個組件:props和state汪拥。props是在父組件中指定,而且一經(jīng)指定篙耗,在被指定的組件的生命周期中則不再改變迫筑。 對于需要改變的數(shù)據(jù),我們需要使用state宗弯。

一般來說脯燃,你需要在constructor中初始化state,然后在需要修改時調(diào)用setState方法蒙保。

假如我們需要制作一段不停閃爍的文字辕棚。文字內(nèi)容本身在組件創(chuàng)建時就已經(jīng)指定好了,所以文字內(nèi)容應(yīng)該是一個prop追他。而文字的顯示或隱藏的狀態(tài)(快速的顯隱切換就產(chǎn)生了閃爍的效果)則是隨著時間變化的坟募,因此這一狀態(tài)應(yīng)該寫到state中。

2.constructor()方法--構(gòu)造函數(shù)

一般構(gòu)造函數(shù)都會先super(props)邑狸;

3.方法的定義

function functionName() {

}

在類的內(nèi)部不使用關(guān)鍵字function

functinName(x, y){}或者是functionName:(x, y)=> {}(箭頭函數(shù))

4.使用導(dǎo)航器實現(xiàn)頁面的跳轉(zhuǎn)

StackNavigator

TabNavigator

DrawerNavigator

5.let const var的用法

const只可以初始化常量

var定義變量懈糯,若不初始化或輸出undeifne,不會報錯

let它的作用域是塊級单雾,用法類似于var赚哗。(for循環(huán)中可用let)

6.生命周期


7.Redux

Redux的設(shè)計思想很簡單,就兩句話硅堆。

(1)Web應(yīng)用是一個狀態(tài)機屿储,視圖與狀態(tài)是一一對應(yīng)的。

(2)所有的狀態(tài)渐逃,保存在一個對象里面够掠。


react-redux:

React-Redux將所有組件分成兩大類:UI組件(presentational component)和容器組件(container component)。

React-Redux提供connect方法茄菊,用于從UI組件生成容器組件疯潭。connect的意思,就是將這兩種組件連起來面殖。

connect方法的完整API如下竖哩。

import { connect } from 'react-redux'

const VisibleTodoList = connect(

mapStateToProps,

mapDispatchToProps

)(TodoList)

Provier:

import { Provider } from 'react-redux'

render(

)

這樣App下的所有子組件都可以拿到state

10.零散知識點梳理:

(1)...items其中三個點(...)表示擴展運算符。是一個將數(shù)組用脊僚,分割開的參數(shù)序列相叁。

(2)箭頭函數(shù):functionName:(x)=>{} ?=== functionName(x) {}

(3)注意this的使用:禁止this指向全局對象。即頂層的this指向undefined。

(4)塊級作用域時可以用let代替var

(5)全局常量和線程安全

在let和const之間增淹,建議優(yōu)先使用const椿访,尤其是在全局環(huán)境,不應(yīng)該設(shè)置變量埠通,只應(yīng)設(shè)置常量赎离。

const優(yōu)于let有幾個原因。一個是const可以提醒閱讀程序的人端辱,這個變量不應(yīng)該改變;另一個是const比較符合函數(shù)式編程思想虽画,運算不改變值舞蔽,只是新建值,而且這樣也有利于將來的分布式運算码撰;最后一個原因是JavaScript編譯器會對const進行優(yōu)化渗柿,所以多使用const,有利于提供程序的運行效率脖岛,也就是說let和const的本質(zhì)區(qū)別朵栖,其實是編譯器內(nèi)部的處理不同。

const聲明常量還有兩個好處柴梆,一是閱讀代碼的人立刻會意識到不應(yīng)該修改這個值陨溅,二是防止了無意間修改變量值所導(dǎo)致的錯誤。

所有的函數(shù)都應(yīng)該設(shè)置為常量绍在。

長遠來看门扇,JavaScript可能會有多線程的實現(xiàn)(比如Intel的River Trail那一類的項目),這時let表示的變量偿渡,只應(yīng)出現(xiàn)在單線程運行的代碼中臼寄,不能是多線程共享的,這樣有利于保證線程安全溜宽。

(6)靜態(tài)字符串一律使用單引號或反引號吉拳,不使用雙引號。動態(tài)字符串使用反引號适揉。

(7)簡單的留攒、單行的、不會復(fù)用的函數(shù)涡扼,建議采用箭頭函數(shù)稼跳。如果函數(shù)體較為復(fù)雜,行數(shù)較多吃沪,還是應(yīng)該采用傳統(tǒng)的函數(shù)寫法汤善。

11.完整的component組成:

limport xxx from‘’

l此處可以定義頂層的常量,function, 或者cla

lexport {xx红淡,xx}

Init class demo:

class ClassDemo extends React.Component {

constructor(props: xxType) {

super(props)

this.state={

name:’hello’,

index:1

}

}

componentWillMount() {}

render () {

return(

return(

this.function1()}/>

);

);

}

componentDidUpdate () {}

function1(){}

function2() {}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末不狮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子在旱,更是在濱河造成了極大的恐慌摇零,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桶蝎,死亡現(xiàn)場離奇詭異驻仅,居然都是意外死亡,警方通過查閱死者的電腦和手機登渣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門噪服,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胜茧,你說我怎么就攤上這事粘优。” “怎么了呻顽?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵雹顺,是天一觀的道長。 經(jīng)常有香客問我廊遍,道長嬉愧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任昧碉,我火速辦了婚禮英染,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘被饿。我一直安慰自己四康,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布狭握。 她就那樣靜靜地躺著闪金,像睡著了一般。 火紅的嫁衣襯著肌膚如雪论颅。 梳的紋絲不亂的頭發(fā)上哎垦,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音恃疯,去河邊找鬼漏设。 笑死,一個胖子當著我的面吹牛今妄,可吹牛的內(nèi)容都是我干的郑口。 我是一名探鬼主播鸳碧,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼犬性!你這毒婦竟也來了瞻离?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤乒裆,失蹤者是張志新(化名)和其女友劉穎套利,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹤耍,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡肉迫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了稿黄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昂拂。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娃肿,到底是詐尸還是另有隱情槽惫,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布胎食,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏撑教。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一醉拓、第九天 我趴在偏房一處隱蔽的房頂上張望伟姐。 院中可真熱鬧,春花似錦亿卤、人聲如沸愤兵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秆乳。三九已至,卻和暖如春钻哩,著一層夾襖步出監(jiān)牢的瞬間屹堰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工街氢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扯键,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓珊肃,卻偏偏與公主長得像荣刑,于是被迫代替她去往敵國和親馅笙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

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