• ES6——面向对象应用


    面向对象应用——React
    特点:
        1、组件化(模块化) --- class(一个组件就是一个class)
        2、强依赖与JSX (JSX==babel==browser.js  是JS的扩展版)
        3、三个库:
            1)react.js ----> React 的核心库
            2)react-dom.js ----> 提供与 DOM 相关的功能
            3)babel.min.js ----> Babel 可以将 ES6 代码转为 ES5 代码,这样我们就能在目前不支持 ES6 浏览器上执行 React 代码。Babel 内嵌了对 JSX 的支持。通过将 Babel 和 babel-sublime 包(package)一同使用可以让源码的语法渲染上升到一个全新的水平
            4)如果我们需要使用 JSX,则 <script> 标签的 type 属性需要设置为 text/babel。
    如:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
        <script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
        <script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
        <script type="text/babel">
            // ...
        </script>
    </head>
    <body>
        <!-- ... -->
    </body>
    </html>
     
    1、React最基础的东西
    window.onload = function (){
        let oDiv = document.getElementById('div1');
        ReactDOM.render( //JSX
            <span>124</span>,
            oDiv
        );
    };
    2、React组件
     
    1)组件渲染1
    class Test extends React.Component{
        constructor(...args) {
            super(...args);
        }
        render(){
            return <span>span123</span>;
        }
    }
    window.onload = function (){
        let oDiv = document.getElementById('div1');
        //JSX
        ReactDOM.render(
            <Test></Test>,
            oDiv
        );
    };

    2)组件渲染2 —— {表达式}

    class Item extends React.Component{
        constructor(...args) {
            super(...args);
        }
        render(){
            return <li>{this.props.str}</li>;
            // 在 JSX 当中你可以插入 JavaScript 的表达式,表达式返回的结果会相应地渲染到页面上。表达式用 {} 包裹。
        }
    }
    window.onload = function (){
        let oDiv = document.getElementById('div1');
        //JSX
        ReactDOM.render(
            <ul>
                <Item str='111'></Item>
                <Item str='111'></Item>
                <Item str='111'></Item>
            </ul>,
            oDiv);
    };

    3)组件渲染3 —— 组件套组件

    class Item extends React.Component{
        constructor(...args) {
            super(...args);
        }
        render(){
            return <li>{this.props.str}</li>;
        }
    }
    class List extends React.Component{
        constructor(...args){
            super(...args);
        }
        render(){
            return <ul>
                    <Item str='111'></Item>
                    <Item str='111'></Item>
                </ul>;
        }
    }
    
    window.onload = function (){
        let oDiv = document.getElementById('div1');
        //JSX
        ReactDOM.render(
            <List></List>,
            oDiv);
    };

    4)组件渲染4 —— React传参

    class Item extends React.Component{
        constructor(...args) {
            super(...args);
        }
        render(){
            return <li>{this.props.str}</li>;
        }
    }
    class List extends React.Component{
        constructor(...args){
            super(...args);
        }
        render(){
            alert(this.props.arr[0]);
            return <ul>
                    <Item str='111'></Item>
                    <Item str='111'></Item>
                </ul>;
        }
    }
    window.onload = function (){
        let oDiv = document.getElementById('div1');
        //JSX
        ReactDOM.render(
            // <List arr="['bbb','ppp','ddd']"></List> // 输出:[
            <List arr={['bbb','ppp','ddd']}></List>, // 输出:bbb
            oDiv
    ); };

    注意:

    React 有两种传参方式 分别是字符串和表达式 其中 只有表达式才可以输出字符串以外的东西,比如,数组... 

    5)组件渲染4 —— React传参3(映射)

    class Item extends React.Component{
        constructor(...args) {
            super(...args);
        }
        render(){
            return <li>{this.props.str}</li>;
        }
    }
    class List extends React.Component{
        constructor(...args){
            super(...args);
        }
        // 还是报错了!
        render(){
            
            let aItems = this.props.arr.map(a=><Item str={a}></Item>);
            return <ul>
                {aItems}
                </ul>;
            // return <ul>
            //     {this.props.arr.map(a=><Item str={a}></Item>)}
            //     </ul>;
        }
    }
    window.onload = function (){
        let oDiv = document.getElementById('div1');
        //JSX
        ReactDOM.render(
            <List arr={['bbb','ppp','ddd','fas']}></List>, 
            oDiv);
    };
  • 相关阅读:
    在使用触摸屏的情况下插拔USB鼠标,鼠标箭头消失
    使用网卡在接收数据包时不会自动组包
    linux开机发现会有个kworker进程规律性占用CPU负载超过50%
    系统时间是否可以精确到ms级别?
    linux开机进入登录界面,输入密码后屏幕黑屏3-10s,然后重新回到登录界面
    linux多网卡情况下,一个网卡进行组播,一个网卡进行点播,同时配置网关后无法通信
    linux中常见内存分配函数(kmalloc,vmalloc等)
    linux内核中的两个标记GFP_KERNEL和GFP_ATOMIC作用是什么?
    gcc: error: unrecognized argument in option ‘-mabi=aapcs-linux’
    shell脚本100例
  • 原文地址:https://www.cnblogs.com/sylys/p/11643987.html
Copyright © 2020-2023  润新知