react輸入 撤銷

來源:互聯網
上載者:User

標籤:one   onchange   min   name   div   charset   pre   height   3.2   

  1. 銷毀階段可以使用的函數:
    componentWillUnmount:在刪除群組件之前進行清理操作,比如計時器和事件監聽器。因為這些函數都是開發人員手動加上去的,react不知道,必須進行手動清理。

  2. 執行個體
    第一種方式:在render中,把之前已有的頁面去掉,反映到頁面中,就是把它刪掉。
    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>測試觸發順序,不輸入不會觸發五個函數,只會觸發render</title></head><body>    <script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/react.min.js"></script>    <script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/JSXTransformer.js"></script>    <script type="text/jsx">        var style={           color:"red",           border:"1px solid #f99",           width:"200px",           height:"50px"        };        var HelloWorld= React.createClass({            render:function(){                console.log("render,4");                return <p>Hello,{this.props.name ? this.props.name : "World"}</p>;            },            componentWillUnmount:function(){                console.log("BOOM");            },        });        var HelloUniverse=React.createClass({            getInitialState:function(){                return {name:""};            },            handleChange:function(event){                //用來響應input的輸入事件                this.setState({name:event.target.value});            },            render:function(){                if(this.state.name == "123"){                   return <div>123</div>                }                return <div>                <HelloWorld name={this.state.name                    //這裡引用了HelloWorld的組件,所以HelloUniverse是他的子組件                }></HelloWorld>                <br />                <input type="text" onChange={this.handleChange} />                  </div>            },        });        React.render(<div style={style}><HelloUniverse></HelloUniverse></div>,document.body)        // 寫為React.render(<div style={style}><HelloWord></HelloWorld></div>,document.body)看看效果    </script></body></html>

    輸入別的不會觸發



    當輸入123的時候



    第二種:就是使用react提供的一個函數unmountComponentAtNode

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title></title></head><body>    <script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/react.min.js"></script>    <script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/JSXTransformer.js"></script>    <script type="text/jsx">        var style={           color:"red",           border:"1px solid #f99",           width:"200px",           height:"50px"        };        var HelloWorld= React.createClass({            render:function(){                console.log("render,4");                return <p>Hello,{this.props.name ? this.props.name : "World"}</p>;            },            componentWillUnmount:function(){                console.log("BOOM");            },        });        var HelloUniverse=React.createClass({            getInitialState:function(){                return {name:""};            },            handleChange:function(event){                //判斷的是input裡面的值,如果是123,我們就使用unmountComponentAtNode來刪除                //使用unmountComponentAtNode時,傳入的必須是裝載時候的節點。

    if(event.target.value == "123"){ React.unmountComponentAtNode(document.getElementsByTagName("body")[0]); return; } this.setState({name:event.target.value}); }, render:function(){ return <div> <HelloWorld name={this.state.name //這裡引用了HelloWorld的組件,所以HelloUniverse是他的子組件 }></HelloWorld> <br /> <input type="text" onChange={this.handleChange} /> </div> }, }); React.render(<div style={style}><HelloUniverse></HelloUniverse></div>,document.body) // 寫為React.render(<div style={style}><HelloWord></HelloWorld></div>,document.body)看看效果 </script></body></html>

react輸入 撤銷

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.