react 學(xué)習(xí)筆記(一) 入門實(shí)例

一:react了解
<script ?src="../build/react.js">? </script> ? ? //是react的核心庫
<script? src="../build/react-dom.js"> <script>? ? ? ? //是提供了與dom相關(guān)的功能
<script? src="../build/browser.min.js"> </script> ? ? //是將jsx語法轉(zhuǎn)為javascript語法JSX的基本語法:遇到html標(biāo)簽(以<開頭)莽鸭,就用html規(guī)則解析熙宇,? 遇到代碼塊(以{開頭)嘱腥,就用javascript規(guī)則解析

二:ReactDOM.render() //將模板轉(zhuǎn)為HTML語言,并插入指定的DOM節(jié)點(diǎn)褐健。
例:

ReactDOM.render(
? ?<div>hello</div>,
? ?document.getElementById('demo')?
?)

三:React.createClass()? //生成一個(gè)組件類
例:

var HelloName = React.createClass({
? ? ? render:function(){
? ? ? ? ? ? ? ? return ? <h1> hello {this.props.name} </h1>
? ? ?}
})

ReactDOM.render(
? ? ? ? ? <HelloName name="nana" /> ,
? ? ? ? ? document.getElementById('demo')
)


解析:1.HelloName就是一個(gè)組件類,模板插入.會(huì)自動(dòng)生成一個(gè)實(shí)例触菜;所有的組件類都必須要有自己的render方法扮授,用于輸出組件;?
?2.helloName組件加入了一個(gè)name屬性莱坎,組件的屬性可以在組件類的this.props對象上獲纫率健;
注意:1.組件類的第一個(gè)字母必須要大寫檐什,?
?2.只能包含一個(gè)頂層標(biāo)簽碴卧;

四:this.props.children? //屬性,表示組件的所有子節(jié)點(diǎn)
它的值可能有三類,沒有子節(jié)點(diǎn)的時(shí)候underfined,一個(gè)子節(jié)點(diǎn)的時(shí)候是object,多個(gè)Arrray;React提供了一個(gè)工具方法React.Children來處理this.props.children,利用React.Children.map來遍歷子節(jié)點(diǎn)this.props.children;
例:

var NoteList = React.createClass({
? ? ? ? render:function(){
? ? ? ? ? ? ? ? ? return? <ol>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? React.Children.map(this.props.children,function(child){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return <li>{child}</li>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? </ol>
? ? ?}
)}

ReactDOM.render(
? ? <NoteList>
? ? ? ? ? ? ? <span>nana</span>
? ? ? ? ? ? ? <span>xiaona</span>
? ?</NoteList>,
? ? document.getElementById('demo')
)

五:組件類的PropTypes屬性乃正,用來驗(yàn)證組件實(shí)例的屬性是否符合要求;
例:

var MyTitle = React.createClass({
? ? ? PropTypes:{
? ? ? ? ? ? ? ? ? title:React.PropTypes.string.isRequired,
? ? ? },
? ? ?render:function(){
? ? ? ? ? ? return? <h1>{this.props.title}</h1>
? ? ?}
})

ReactDOM.render(
? ? ? ? <MyTitle? title="nana"/>? ,
? ? ? ? document.getElementById('dom')
)

React.PropTypes告訴React這個(gè)title屬性是必須的住册,而且必須是字符串;

六:getDefaultProps() //設(shè)置組件屬性的默認(rèn)值
?例:

var MyName = React.createClass({
? ? ? ? ? ?getDefaultProps:function(){
? ? ? ? ? ? ? ? ? return {name:'xiaona'}
? ? ? ? ? ?},
? ? ? ? ? render:function(){
? ? ? ? ? ? ? return? <h1>{this.props.name}</h1>
? ? ? ? ? }
})

ReactDOM.render(
? ? ? ? <MyName />,
? ? ? ? ?document.getElementById('dom')
)

七:getInitialState() // 設(shè)置組件的初始狀態(tài)
?例:

var ButtonLink = React.createClass({
? ? ? ? ? getInitialState:function(){
? ? ? ? ? ? ? ? ? ? return {link:false}
? ? ? ? ? },
? ? ? ? ? handleChangeState:function({
? ? ? ? ? ? ? ? this.setState({
? ? ? ? ? ? ? ? ? ? ? ? link:!this.state.link
? ? ? ? ? ? ? ? })
? ? ? ? },
? ? ? ? render:function(){
? ? ? ? ? ? ? ? var text = this.state.link ? '選擇' : '不選';
? ? ? ? ? ? ? ? return? <p onClick={this.handleChangeState}> {text} </p>
? ? ? }
});
ReactDOM.render(
? ? <ButtonLink ?/> ? ,? ?
? ? document.getElementById('demo6')?
)

詳解:1.getInitilaState(); 設(shè)置組件初始狀態(tài)瓮具;
? ? ? ? ? ?2.this.setState({}) ; 修改組件初始狀態(tài)荧飞;?
? ? ? ? ? ?3.this.state; 獲取組件初始狀態(tài)的某一值凡人;

八:獲取真實(shí)dom節(jié)點(diǎn)
組件并不是真實(shí)的dom,而是虛擬dom,存在于內(nèi)存之中,插入文檔之后叹阔,才會(huì)變成真實(shí)dom; 需要獲取到真實(shí)的dom節(jié)點(diǎn)挠轴,用到ref屬性;例:

var? InputText = React.createClass({
? ? ? ? ? handleGetValue:function(){
? ? ? ? ? ? ? ? ? ? this.refs.textValue.focus();
? ? ? ? ? ?},
? ? ? ? ? render :function(){
? ? ? ? ? ? ? return (
? ? ? ? ? ? ? ? ? ? ? <div>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <input type="text" ?ref="textValue">
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <input type="button" ?value="點(diǎn)擊獲取焦點(diǎn)" onClick={this.handleGetValue}>
? ? ? ? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? )
? ? ? ? ?}
});
ReactDOM.render(
? ? ? ? ?<InputText /> ,
? ? ? ? ?document.getElementById('demo')
)

詳解:1.虛擬dom是拿不到用戶輸入的內(nèi)容耳幢;文本輸入框必須要有一個(gè)ref屬性岸晦,然后this.refs.[refName]就會(huì)返回真實(shí)的dom節(jié)點(diǎn);?
?2.this.refs.[refName]屬性獲取的是真實(shí)的dom,所以必須等到虛擬dom插入文檔以后睛藻;所以通過為組件指定click事件的回調(diào)函數(shù)启上,確保只有等到真實(shí)dom發(fā)生click事件之后,才會(huì)讀取this.refs.[refName]屬性店印;

九:表單獲取input的值 event.target.valuevar?

var GetVlaue = React.createClass({? ?
? ? ? getInitialState:function(){?
? ? ? ? ? return { text:'請輸入默認(rèn)值', }
? ? ? },
? ? ? handelGetText:function(event){
? ? ? ? ? ?this.setState({text:event.target.value})
? ? ? },
? ? render:function(){
? ? ? ? ? return (
? ? ? ? ? ? ? ? ? <div>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <input? placehloder={this.state.text}? onClick={this.handelGetText}/>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <span>{this.state.text}</span>
? ? ? ? ? ? ? ? ? </div>
? ? ? ? ? ?)
? ? }
});

ReactDOM.render(
? ? <Get Value />,
? ? document.getElementById('demo8')


十:組件的生命周期分為3個(gè)狀態(tài) :?

Mounting插入真實(shí)的dom? ?
updating正在被重新渲染?
Unmounting移除出真實(shí)dom

3種狀態(tài)共計(jì)5種處理函數(shù)

compontentWillMount() 插入真實(shí)dom之前冈在;
compontentDidMount() 插入真實(shí)dom之后;
剩下的集中待理解之后按摘;

十一:Ajax

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末包券,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子炫贤,更是在濱河造成了極大的恐慌兴使,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件照激,死亡現(xiàn)場離奇詭異发魄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)俩垃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門励幼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人口柳,你說我怎么就攤上這事苹粟。” “怎么了跃闹?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵嵌削,是天一觀的道長。 經(jīng)常有香客問我望艺,道長苛秕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任找默,我火速辦了婚禮艇劫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惩激。我一直安慰自己店煞,他們只是感情好蟹演,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著顷蟀,像睡著了一般酒请。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鸣个,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天蚌父,我揣著相機(jī)與錄音,去河邊找鬼毛萌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛喝滞,可吹牛的內(nèi)容都是我干的阁将。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼右遭,長吁一口氣:“原來是場噩夢啊……” “哼做盅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窘哈,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤吹榴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后滚婉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體图筹,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年让腹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了远剩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骇窍,死狀恐怖瓜晤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腹纳,我是刑警寧澤痢掠,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站嘲恍,受9級特大地震影響足画,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佃牛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一锌云、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吁脱,春花似錦桑涎、人聲如沸彬向。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娃胆。三九已至,卻和暖如春等曼,著一層夾襖步出監(jiān)牢的瞬間里烦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工禁谦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胁黑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓州泊,卻偏偏與公主長得像丧蘸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子遥皂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

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

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南力喷,這只是我在學(xué)習(xí)過程中的一些閱讀筆記,個(gè)人覺得該教程講解深入淺出演训,比目前大...
    leonaxiong閱讀 2,813評論 1 18
  • 使用 create-react-app 快速構(gòu)建 React 開發(fā)環(huán)境 項(xiàng)目的目錄結(jié)構(gòu)如下: React JSX ...
    majun00閱讀 505評論 0 0
  • 現(xiàn)在最熱門的前端框架弟孟,毫無疑問是 React 。上周样悟,基于 React 的 React Native 發(fā)布拂募,結(jié)果一...
    sakura_L閱讀 422評論 0 0
  • React Native是基于React的,在開發(fā)React Native過程中少不了的需要用到React方面的知...
    亓凡閱讀 1,463評論 1 4
  • 千年之前,是一只狐礁苗, 為你所救爬凑,得你悉心照顧,伴你寒窗苦讀试伙,終嘁信,迎來你的金榜題名,洞房花燭夜疏叨,我飄然離去潘靖。 ——題...
    meker閱讀 377評論 0 0