首先,我們要說幾種方法:
1.和狀態有關的:
React把組件看成是一個狀態機,只需要更新組件的state,然後根據新的state重新渲染界面(不操作dom);
setState:設置狀態;
replaceState:替換狀態;
不能用this.state來修改狀態,不過可以通過this.state來讀取,this.setState方法就修改狀態值,每次修改之後就會自動調用this.render方法,再次渲染組件。
和屬性有關:
SetProps:設置屬性;
replaceProps:替換屬性;
react有兩個類似的方法 props和state,其中props是不可變的,而state可以根據用戶交互來改變(this.props.name和this.state.name)
props可以通過getDefaultProps()方法爲props設置默認值。在React.createClass({
getDefaultProps:function(){
return{
name:”XXXX”
}}})
props驗證使用propTypes
強制更新:forceUpdate;
一般來說,當組件重新渲染的時候也會讀取this.state和this.props如果說狀態沒有改變的話,就會之更新dom。forceUpdate這個方法會通知react需要調用render,但是並不是很推薦使用這種方法。這樣的話就可以僅僅從this.state和this.props中讀取狀態觸發render()調用。
獲取dom節點:findDOMNode;
如果說組件已,經掛在到dom中就會返回對應的dom元素,當render返回的是null或者是false時,findDOMNode就也返回null;
PS:
這裏要說一下,組件獲得的並不是真正的dom節點,而是在內存中的數據結構,是一種虛擬的dom,當他插入文檔的時候纔會變成真正的dom節點。首先現將所有的dom變動都現在虛擬的上進行,然後再將實際發生變動的部份反應都真實的dom上(其中有一個算法 dom diff,可以極大地提升網頁的性能)
判斷組件掛在載情況:isMounted:
這個可以用來判斷組件是不是已經掛載到dom中了,返回的是true和false。
React組件生命週期,
就是說三個狀態,五種函數處理方法。
Mounting(已插入真實的dom),
updating(正在被重新渲染的),
UnMouning(移出真實的dom)
每個狀態來說都有兩種處理will和did。顧名思義,一個是進入狀態之前,一個是進入狀態之後。(就是把那兩個單詞往裏面加就行,所以你就記住三個方法就差不多了)。
componentWillMount();
componentDidMount();
componentWillUpdate();
componentDidUpdate();
componentWillUnmount();
以上是在用的時候需要記住的部分,其他的方法什麼的看看api用的時候再看看比較好,畢竟不用也記不住。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="build/react.js"></script>
<script src="build/react-dom.js"></script>
<script src="build/browser.min.js"></script>
</head>
<body>
<div id="exam"></div>
<script type="text/babel">
var Hello=React.createClass({
getInitialState:function(){
return {
opacity:1.0
}
},
componentDidMount:function(){
this.timer=setInterval(function(){
var opacity=this.state.opacity;
opacity -=.05;
if(opacity<0.1){
opacity=1.0;
}
this.setState({
opacity:opacity
})
}.bind(this),100)
}
,
render:function(){
return (
<div style={{opacity:this.state.opacity}}>
Hello {this.props.name}
</div>
)
}
})
ReactDOM.render( <Hello name="world"/>,
document.getElementById("exam"))
</script>
</body>
</html>
上面是我插入的一個小例子。主要是用一下這兩篇文章中的東西,插入文件,定義方法(render一定要有的)。React.createClass來創建組件。ReactDOM.render來用。將其呈現到id名字是exam的div中。這裏面的感覺就像是vue一樣都是<div id="app">
<p>{{ message }}</p>
</div>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello Vue.js!'
}
})
</script>
感覺上都是先定義了一塊元素區域用來顯示(div)。之後在固定一個方法裏面用對象的形式來定義方法和值。所以還是覺得框架你在最開始學習的時候深入研究一個,達到一個可以用它來開發的時候,別的形式的也會有到大同小異的地方。學起來會先對容易些。。。
下次要說說前端的框架有哪些,框架的作用。能知道的都要去了解寫一下。。古德拜