自學react(下)

首先,我們要說幾種方法:

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)。之後在固定一個方法裏面用對象的形式來定義方法和值。所以還是覺得框架你在最開始學習的時候深入研究一個,達到一個可以用它來開發的時候,別的形式的也會有到大同小異的地方。學起來會先對容易些。。。

下次要說說前端的框架有哪些,框架的作用。能知道的都要去了解寫一下。奮鬥。古德拜


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章