其他分享
首页 > 其他分享> > 第一章、react高级

第一章、react高级

作者:互联网

目录

一、邂逅react开发和初体验

1、简介
* react是什么?
    - 用于构建用户界面的javascript库
* 常见的javascript库
    - jquery
    - vue
    - react
    - angular
* react的起源
    - 2013年,facebook开源的javascript库
* react的特点-声明式编程
    - ui = f(state)
* react的特点-组件化开发
    - 复杂的界面拆分成一个个小的组件
* react的特点-多平台适配
    - 2013:web
    - 2015:reactnative用于移动端开发
    - 2017:reactvr用于开发虚拟现实web应用程序
* 掌握最先进的思想和技术
    - react hooks的思想
    - flutter(widget-element-renderobject)对应react(jsx-虚拟dom-真实dom)
* hackerrank调查显示
* react在国内外被广泛使用
    - 网易云音乐
    - 斗鱼
    - 知乎
    - 阿里云
    - 优酷
2、hello react案例
<h2 id="text"></h2>
<button id="btn">改变文本</button>
<script>
    // 命令式编程:每做一个操作,都是给计算机(浏览器)一步步命令
    // 声明式编程:
    // 1、定义数据
    let message = 'hello world'
    let text = document.getElementById("text")
    let btn = document.getElementById("btn")
    // 2、将数据显示在h2元素中
    text.innerHTML = message
    // 3、点击按钮,界面的数据发生变化
    btn.onclick = function () {
        message = 'hello react'
        text.innerHTML = message
    }
</script>
<div id="app"></div>
<!-- crossorigin:这个属性的目的是为了拿到跨域脚本的错误信息 -->
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- 注意事项:使用jsx,并且希望script中的jsx的代码被解析,必须在script标签中添加一个属性 -->
<!-- jsx特点:多个标签最外层(根)只能有一个标签 -->
<script type="text/babel">
    /**
     * 一、react开发依赖
     *     - react:核心代码
     *     - react-dom:跨平台
     *     - babel:代码转换工具
     * 二、react-dom
     *     - web端:将jsx渲染成真实dom
     *     - native端:将jsx渲染成原生的控件(android的button,ios的uibutton)
     * 三、babel
     *     - es6 -> babel -> es5
     *     - jsx(语法糖) -> babel -> React.renderElement()
     * 四、引入react依赖
     *     - 直接cdn引入
     *     - 下载后,添加本地依赖
     *     - 通过npm管理(后续脚手架再使用)
     */
    let message = "hello world"

    function btnClick() {
        message = 'hello react'
        render()
    }

    function render() {
        // <div></div>:jsx代码
        ReactDOM.render(<div>
            <h2>{message}</h2>
            <button onClick={btnClick}>改变文本</button>
        </div>, document.getElementById('app'))
    }

    render()
</script>
<div id="app"></div>
<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<script type="text/babel">
    // 封装app组件
    class App extends React.Component {
        constructor() {
            super();
            this.state = {
                message: "hello world"
            }
        }

        render() {
            return (
                <div>
                    <h2>{this.state.message}</h2>
                    <button onClick={this.btnClick.bind(this)}>改变文本</button>
                </div>
            )
        }

        btnClick() {
            this.setState({
                message: 'hello react'
            })
        }
    }

    // 渲染组件
    ReactDOM.render(<App/>, document.getElementById("app"))
</script>

标签:render,dom,高级,第一章,react,message,jsx,hello
来源: https://www.cnblogs.com/linding/p/16663886.html