2017.1.11

refs 對組件的引用

render() 會實行一個虛擬的DOM,renderDOM.render會直接返回對 組件的真正的引用
Jsx本身并不會返回一個組件實例,只是一個ReactElement對象:一個關(guān)于所掛載的組件的輕量級的描述

如果給一個DOM組件(譬如div)附加ref屬性,你會直接拿到DOM節(jié)點。如果給一個復(fù)合組件(如<TextInput>)附加ref屬性,會拿到對應(yīng)的組件類的實例
<input ref = 'myRefString'>;
var input= 你必須以this.refs['myRefString']的形式來訪問引用。就可以直接訪問這個input標簽的
不要用點字符,或者就是前面的例子那樣的方式用一個虛函數(shù)

router配置

入口index里面要進行router的配置,公用的部分,比如菜單欄,寫在最完成的Route里面,然后內(nèi)部加載的內(nèi)容,根據(jù)路由加載不同的component,然后在container中進行其配置
這里還要注意的一個地方是,所有的虛擬DOM都是在這里通過ReactDOM.render進行實例化的,給一個具體的位置

組件的生命周期函數(shù)

在不同的生命周期要進行不同的操作

不同的生命周期中要完成不同的任務(wù),我們一般在componentDidMount()組件第一次加載成功之后,這時候可以用getDOMNode()進行組件的訪問,進行顯示狀態(tài)的改變,進行setTimeOut,進行ajax發(fā)請求。
componentWillReceiveProps(nextprops)父組件進行render的時候,會讓其子組件執(zhí)行這個函數(shù),無論props有沒有更行,也無論父子組件是不是進行了交互? ? ??
shouldComponentUpdate 如果返回的是個false,則在下次state,change的時候不調(diào)用render

componentDidUpdate()組件在掛載之后,進行setState的時候,并且shouldComponentUpdate返回結(jié)果是true的時候,會調(diào)用這個函數(shù),一般指的是組件的內(nèi)部進行的dom樹的更新

componentWillUnmount()組件從DOM中UNMount之后執(zhí)行,一般用來清除clearInterval

組件進行更新的四種方式:?
1 首次渲染render的時候
2 自身的setState被調(diào)用的時候
3 父組件的props進行更改的時候
4 調(diào)用this.forceUpdate的時候

頁面內(nèi)加載內(nèi)容的跳轉(zhuǎn)

對于頁面內(nèi)的跳轉(zhuǎn),采取的主要是a標簽進行相對路徑的改變

相當于進行detail.js頁面的加載

組件內(nèi)要根據(jù)邏輯判斷某模塊的展示狀態(tài)展示內(nèi)容的時候,我們一般采取的是用js的邏輯判斷,即用{this.function},在具體的function中進行,邏輯判斷,然后return不同的內(nèi)容

組件的默認state

1. ?createClass帶有的getInitialState()方法,通過return進行默認狀態(tài)的配置,下文中進行如果涉及到state的改變的話,我們采取setState()方法進行重寫,state的改變會導致整個頁面進行diff操作,重新加載新的dom樹

2. ? 使用constructor進行初始化state


兄弟組件進行通信

1 采用props的方式進行父子通信

2 采用觀察者模式

// eventProxy.js 進行事件的分發(fā)

'use strict';

consteventProxy = {

onObj: {},

oneObj: {},

on:function(key, fn){

if(this.onObj[key] ===undefined) {

this.onObj[key] = [];

}

this.onObj[key].push(fn);

},

one:function(key, fn){

if(this.oneObj[key] ===undefined) {

this.oneObj[key] = [];

}

this.oneObj[key].push(fn);

},

off:function(key){

this.onObj[key] = [];

this.oneObj[key] = [];

},

trigger:function(){

letkey, args;

if(arguments.length ==0) {

returnfalse;

}

key =arguments[0];

args = [].concat(Array.prototype.slice.call(arguments,1));

if(this.onObj[key] !==undefined

&&this.onObj[key].length >0) {

for(letiinthis.onObj[key]) {

this.onObj[key][i].apply(null, args);

}

}

if(this.oneObj[key] !==undefined

&&this.oneObj[key].length >0) {

for(letiinthis.oneObj[key]) {

this.oneObj[key][i].apply(null, args);

this.oneObj[key][i] =undefined;

}

this.oneObj[key] = [];

}

}

};

exportdefaulteventProxy;


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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