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.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> //函数不能写括号 不然会立即执行
                            )//由于es6的this指向问题this值拿不到(onclick绑定的是匿名函数),所有需要绑定当前的this指向当前的作用域
                        }
                    )
               )
           }
       }

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

猜你喜欢

转载自www.cnblogs.com/l8l8/p/9454317.html