使用create-react-app快速搭建react环境

模板网 2021-04-14
使用create-react-app快速搭建react环境
npm install create-react-app -g
cd test_dir
create-react-app demo_react
cd demo_react
npm start

react的组件中的state必须是一个javascript对象

1.环境

依次引入一下文件

<!-- react 框架核心文件 -->
<script src='react.js'></script>

<!-- react 与DOM操作相关 -->
<script src='react-dom.js'></script>

<!-- 将jsx语法转换为javascript语法 -->
<script src='browser.min.js'></script>
2.ReactDOM.render
<div id='box'></div>
<!-- 注意这里的type类型是babel -->
<script type='text/babel'>
    ReactDOM.render(
        <h1>hello react!</h1>,
        document.getElementById('box')
        )
</script>
3.{}支持javascript语法解析
<div id='box'></div>
<script type='text/babel'>
    var names=['Tom','James','Leo','Alice','Green'];
    ReactDOM.render(
        <div>
            {
                names.map(function(name)
                {
                    return <div>hello name</div>
                })
            }
        </div>
        )
</script>
4.组件
<div id='box'></div>
<script type='text/babel'>
    // 组件的首字母必须大写
    var Hello=React.createClass({
            render:function(){
                return <h1>hello {this.props.name}</h1>
            }
        })
    ReactDOM.render(
            <Hello name='llz'></Hello>,
            document.getElementById('box')
        )
</script>
5.this.props.children
<div id='box'></div>
<script type='text/babel'>
    var Name=React.createClass({
            render:function(){
                return <ul>
                   {
                        React.Children.map(this.props.children,function(child){
                                return <li>{child}</li>
                            })
                   }
                </ul>
            }
        })
    ReactDOM.render(
            <Name>
                 <span>llz</span>
                 <span>ljw</span>
                 <span>dsb</span>
            </Name>,
            document.getElementById('box')
        )
</script>
6.PropTypes
<div id='box'></div>
<script type='text/babel'>
    var Hello=React.createClass({
        <!-- 设置属性的验证机制 -->
            propTypes:{
                <!-- 如果title属性的值不是字符串类型则会报错 -->
                title:React.PropTypes.string.isRequired
            },
            render:function(){
                return <h1>{this.props.title}</h1>
            }
        })
    ReactDOM.render(
            <Hello title={'test'}></Hello>,
            document.getElementById('box)
        )
</script>
7.getDefaultProps
<div id='box'></div>
<script type='text/babel'>
    var Hello=React.createClass({
        <!-- 设置属性的默认值 -->
            getDefaultProps:function(){
                return {title:'test'}
            },
            render:function(){
                return <h1>{this.props.title}</h1>
            }
        })
    ReactDOM.render(
            <Hello></Hello>,
            document.getElementById('box')
        )
</script>
8.refs
<div id='box'></div>
<script type='text/babel'>
    var Hello=React.createClass({
            handleClick:function(){
                <!-- 根据ref获取对应的真实DOM -->
                this.refs.text.value=1;
            },
            render:function(){
                return <div>
                    <input type="text" ref='test'>
                    <button onClick={this.handleClick}>click</button>
                </div>
            }
        })
    ReactDOM.render(
            <Hello></Hello>,
            document.getElmentById('box')
        )
</script>
9.state
<div id='box'></div>
<script type='text/babel'>
    var Say=React.createClass({
            <!-- 初始化状态 -->
            getInitialState:function(){
                return {word:false}
            },
            handleClick:function(){
                this.setState({word:!this.state.word})
            },
            render:function(){
                return <div>
                    <h1>say {this.state.word?'yes':'no'}</h1>
                    <button onClick={this.handleClick}>change</button>
                </div>
            }
        })
    ReactDOM.render(
            <Say></Say>,
            document.getElementById('box')
        )
</script>
10.表单
<div id='box'></div>
<script type='text/babel'>
    var Say=React.createClass({
            getInitialState:function(){
                return {word:'hello'}
            },
            handleClick:function(event){
                this.setState({word:event.target.value})
            },
            render:function(){
                return <div>
                    <input type="text" onChange={this.handleClick} />
                    <h1>say {this.state.word}</h1>
                </div>
            }
        })
    ReactDOM.render(
            <Say></Say>,
            document.getElementById('box')
        )
</script>
11.组件的生命周期
  • constructor

    组件整个生命周期第一个被调用的构造函数

    在es6中,类的成员函数在执行时的this并不是和类实例自动绑定的,
    而在构造函数中this就是当前组件实例,所以为方便后期调用,
    往往在构造函数中对特定函数绑定this:
    this.onClick=this.onClick.bind(this)
    
  • getInitialState & getInitialProps
    两者只在使用React.createClass创建组件时可用
    在es6中:
    Sample.defaultProps={return {sampleProp:0}}
    
  • componentWillMount & componentDidMount ``` componentWillMount在render函数被调用前执行 componentDidMount在render函数执行完,组件装载在DOM树上后执行,如果同时引入多个该组件,那么 该函数会在所有组件的render执行完成挂载后才会依次执行。

以上两个函数只在初次渲染时执行一次。


```
12.ajax

相关文章

  1. 编程常用词汇表

    这里整理了一些常用词汇,供在编码中使用: 通用 数学 列表 时间 图像 文件目录 执行 业务 用户相关 文章相关 商品相关 优惠券相关 订单相关 这里总结了一些软件开发中常用的词汇,如

  2. php配置加载器

    配置加载器 当我们使用App::cfg系列方法获取配置时,wulaphp是通过配置加载器先加载配置然后再返回配置项对应值的(当然可以返回整个配置数组)。配置加载器ConfigurationLoade

  3. Python之系统交互

    我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有

  4. 浏览器的同源策略

    一、同源的三个条件 1、域名(二级域名与一级域名之间也算是不同源) 2、端口 3、协议 二、同源策略的意义 浏览器基于用户的隐私安全目的, 防止恶意网站窃取数据(只是浏览器有这个同源策略设置,但是

  5. 常见排序列表

    常见排序列表 中文名称 英文名称 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 选择排序 Selection n^2 n^2 n^2 1 不稳 冒泡排序 Bub

随机推荐

  1. 编程常用词汇表

    这里整理了一些常用词汇,供在编码中使用: 通用 数学 列表 时间 图像 文件目录 执行 业务 用户相关 文章相关 商品相关 优惠券相关 订单相关 这里总结了一些软件开发中常用的词汇,如

  2. php配置加载器

    配置加载器 当我们使用App::cfg系列方法获取配置时,wulaphp是通过配置加载器先加载配置然后再返回配置项对应值的(当然可以返回整个配置数组)。配置加载器ConfigurationLoade

  3. Python之系统交互

    我们几乎可以在任何操作系统上通过命令行指令与操作系统进行交互,比如Linux平台下的shell。那么我们如何通过Python来完成这些命令行指令的执行呢?另外,我们应该知道的是命令行指令的执行通常有

  4. 浏览器的同源策略

    一、同源的三个条件 1、域名(二级域名与一级域名之间也算是不同源) 2、端口 3、协议 二、同源策略的意义 浏览器基于用户的隐私安全目的, 防止恶意网站窃取数据(只是浏览器有这个同源策略设置,但是

  5. 常见排序列表

    常见排序列表 中文名称 英文名称 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 选择排序 Selection n^2 n^2 n^2 1 不稳 冒泡排序 Bub