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>

 

posted @ 2018-08-10 12:17  悔创阿里-杰克马  阅读(1688)  评论(0编辑  收藏  举报
求投食~(点图即可)