react組件選項卡demo


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../node_modules/react/umd/react.development.js"></script>
    <script src="../node_modules/react-dom/umd/react-dom.development.js"></script>
    <script src="../node_modules/babel-standalone/babel.js"></script>
</head>
<body>
    <div id="app">

    </div>
    <script type="text/babel">
        let arr = [1,2,3,4];
        // 根組件默認拿到全局變量為data的值 在子組件傳值直接傳值進行調用
       class List3 extends React.Component{//必須是大寫的首字母
           constructor(props){ //構造函數傳參
               super(props);    //調用所有原型上的屬性來實現props傳值
               this.state = {
                   n:0
               }
           }
           inc(ind){
                // 當調用時不綁定this時,this指向調用的window,由於是嚴格模式所以指向undefined
                   this.setState({
                       n:ind
                   })
               };
           render(){
               console.log(this);//符號必須是分號不能是逗號
               let {data} = this.props;
               let {n} = this.state;
               return(
                            data.map((item,index)=>{
                            return (
                                <div key={index} style={{color:n===index?'red':null}} 
                                onClick={this.inc.bind(this,index)}>{item}</div> 
                                //這里的this指向的是實例 但在再調用時 由於是window.onclick調用
                                // 導致內部this.setState拿不到this指向。又由於es6嚴格模式所以不會指向winodow而是undefined
                                // 所以就會報錯 不存在這個屬性
                            )
                        }
                    )
               )
           }
       }

       ReactDOM.render(
           <div>
                <List3 data={arr}/>
           </div>,
           document.getElementById('app')
       )
    </script>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM