美文网首页
01_12.组件支持可配参数_父传子

01_12.组件支持可配参数_父传子

作者: Robyn_Luo | 来源:发表于2017-11-24 20:14 被阅读0次
    <!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>
        <link rel="stylesheet" type="text/css" href="css/tab.css">
        <script src="../react.js"></script>
        <script src="../react-dom.js"></script>
        <script src="../browser.min.js"></script>
    </head>
    <body>
        <div id="app"></div>
        <script type="text/babel">
    
        // 在React中父给子组件传递数据的思想与VUE基本一样, 
        // 都是父在使用子的时候通过属性传值, 子通过props接收值
    
        var AppTab = React.createClass({
    
            // 状态定义
            getInitialState() {
                return {
                    
                    focusIndex: 0
                };
            },
    
            // tab栏导航点击处理函数
            clickHandler(index) {
                this.setState({
                    focusIndex: index             // 必须调用react提供的方法修改状态
                });
            },
    
            render() {
                return (
                    <div className="wrapper" id="wrapper">
                        <ul className="tab" id="tab-menu">
                            {
                                /* 定义的组件内部状态, 通过组件实例的state属性来访问 */ 
                                this.props.menuList.map((v, i) => {
                                    return (
                                        /* 这里绑定的事件处理函数, 从组件实例this身上取 */ 
                                        <li onClick={ this.clickHandler.bind(this, i) } className={ this.state.focusIndex == i? 'tab-item active': 'tab-item' } key={ v }>
                                            <span>◆</span>{ v }
                                        </li>
                                    )
                                })
                            }
                        </ul>
                        <div className="products" id="tab-main">
                            {
                                this.props.mainList.map((v, i) => {
                                    return (
                                        <div className={ this.state.focusIndex == i? "main selected": "main" } key={ i }>
                                            <a href="###"><img src={ v } alt=""/></a>
                                        </div>
                                    )
                                })
                            }
                        </div>
                    </div>
                );
            }
        });
    
        // 渲染AppTab组件
        var menuList1 = [ '后端', '运维', '数据库', '架构师' ];
        var menuList2 = [ 'web前端', 'android前端', 'ios前端', 'pc前端'];
        var mainList1 = ['imgs/guojidapai.jpg', 'imgs/guojidapai.jpg', 'imgs/guojidapai.jpg', 'imgs/guojidapai.jpg'];
        var mainList2 = ['imgs/guozhuangmingpin.jpg', 'imgs/qingjieyongpin.jpg', 'imgs/nanshijingpin.jpg', 'imgs/guozhuangmingpin.jpg'];
        ReactDOM.render(
        <div>
            <AppTab menuList={ menuList1 } mainList={ mainList1 }/>
            <AppTab menuList={ menuList2 } mainList={ mainList2 }/>
        </div>
        , document.querySelector('#app'));
        </script>
    </body>
    </html>
    
    

    相关文章

      网友评论

          本文标题:01_12.组件支持可配参数_父传子

          本文链接:https://www.haomeiwen.com/subject/jwnfbxtx.html