美文网首页React专项
react入门之二--开发篇

react入门之二--开发篇

作者: 彬哥头发多 | 来源:发表于2016-11-24 17:56 被阅读102次

    react开发篇

    本系列第一篇文章我们说基础知识,主要是让大家对react能够直接上手使用,做出东西来,但是对于一些相对复杂逻辑的业务,我们就需要科学的规划和系统的使用react.

    而react,毋庸置疑,和使用a2(angular2)一样,涉及到一些简单的常用的ES6的知识,当然是非常简单的,我们遇到总结到下面的第一部分就好。

    一、ES6基础速查

    ​ 这里的ES6知识并不是告诉你准确的东西,而是让你在一分钟之内了解ES6,让你顺利的学习react,而不是耗费精力在细枝末节上,当然ES6绝对是重中之重,理解react的必备,但是这个教程是让你迅速上手出活,而不是教你原理。

    直接上ES6对比ES6

    ​ let ->var

    ​ const ->var 当时不能改,常量

    ​ import 相当于 src

    ​ class ES5里面的 对象

    ​ arr.map函数

    ​ 箭头函数 直接说

    ([param] [, param]) => {
       statements
    }
    
    param => expression
    () => { ... } // 零个参数用 () 表示;
    x => { ... } // 一个参数可以省略 ();
    (x, y) => { ... } // 多参数不能省略 ();
    

    好,我们继续回到正题,模块化的使用react,前面我们使用过引用react库的方式,而实际项目中更常见的方式是我们通过NPM/yarn等,管理项目功能和模块,不多说我们还是从一个最简单的hello world开始。

    二、react的常用子

    直接上安装react和相关环境,

    npm install -g create-react-app
    create-react-app hello-world
    cd hello-world
    npm start
    

    注意,很多教程是从webpack, Babel and ESLint等配置开始的,其实不用,上面的工作其实就是帮你配置这些,当然了,你如果能够了解如何配置更好,但是现在是学react所以我尽量不引人新知识,想让大家会用。

    注意这个是开发过程,如果是上线 使用命令

    npm run build 最后会将上线文件放到 build文件夹下
    

    大部分时间我们是和app.js打交道,不墨迹开整。

    1.先看看app.js里面写的啥?

    class App extends Component{
      render(){
        return (
            <h1>hello word</h1>
        );
      } 
    }
    

    我们对比一下之前函数的写法

    ReactDOM.render(
      <h1>Hello, world!</h1>,
      document.getElementById('root')
    );
    

    注意:推荐大家使用第一种写法,为什么?因为第一种写法有状态,函数的写法没有。后面我们会说为什么。

    我们继续折腾app.js

    2.下面我们说下,在react中的属性使用

    class App extends Component{
      render(){
        return (
            <h1>{this.props.index}</h1>
        );
      } 
    }
    ReactDOM.render(
        <App index = '我是一个属性' />//注意自封闭,txt就是属性
        document.getElementById('div1');
    );
    

    3.下面说一下个对应第一个第一篇文章的状态管理。先看代码

    class App extends Component{
        constructor(){
            super();//不用你理解,你只要记住一件事 super调用父类的构造器,使用this的话必须先执行它。
            this.state = {
                name:'尼古拉斯·屌·大彬哥'
            };
        }
        update(e){
            this.setState({
              name:e.target.value
            });
        }
        render(){
          return (
            <div>
              <input type = "text" onChange = {this.update.bind(this)} />
              <h1>{this.state.name}</h1>
            </div>
          );
        } 
    }
    
    

    4.多个组件嵌套 App 这个组件里面嵌套着 Widget

    import React, { Component } from 'react';
    
    class App extends Component{
        constructor(){
              super();//不用你理解,你只要记住一件事 super调用父类的构造器,使用this的话必须先执行它。
              this.state = {
                  txt:''
              };
              this.update = this.update.bind(this);
        }
        update(e){
             this.setState({
                txt:e.target.value
    
             });
        }
        render(){
          return (
            <div>
              <Widget txt={this.state.txt} update={this.update} />
              <Widget txt={this.state.txt} update={this.update} />
              <Widget txt={this.state.txt} update={this.update} />
            </div>
          
          );
        } 
    }
    const Widget = (props) => {
      return (
          <div>
            <input type="text"
              onChange={props.update} />
            <h1>{props.txt}</h1>
          </div>
        );
    }
    export default App;
    
    

    5.作为例子肯定少不了列表循环

    class App extends Component{
        constructor(){
            super();//不用你理解,你只要记住一件事 super调用父类的构造器,使用this的话必须先执行它。
            this.state = {
                data:[
                  {name:"leo",age:18},
                  {name:"alice",age:19},
                  {name:"blue",age:17},
                ]
            };
        }
        render(){
            let rows = this.state.data.map(person=>{
              return <PersonRow key = {person.id} data = {person} />
            });
          return (
            <ul>    
              <li>rows</li>
            </ul>
          );
        } 
    }
    
    const PersonRow = (props)=>{
      return (
        <li>{props.data.name}-----{props.data.age}</li>
      );
    }
    
    

    关于react的简易和总结

    ​ react 功能简单,技术链条很短只是一个mvc的v,相比angular2更实用,当然技术栈也不完整是个弊端,总体来说可以采用

    ​ 先讲ES6->react ->angular2的思路,这里要重点讲ES6,因为是目前大部分库都是基于ES6构建的。

    ​ 单纯使用react的例子可以讲:

    ​ 选项卡

    ​ 留言板

    ​ 五子棋

    如果想更加实战化,推荐详细讲。

    ​ react、webpack、bebel 和redux。

    react开发 组件化是个好的发展方向,相比angular2断崖式的更新,更稳定,推荐重点使用。

    讲完这篇基本上 大家了解ES6和写一些选项卡,留言板在之类的没问题了,有同学可能会问为啥没有数据交互,已经强调过了,它是展示层,跟ajax无关。好下面我说下未来可能大火,但是目前不是很实用的React forNative.

    相关文章

      网友评论

      • 音殇:干货,先好评再细看!

      本文标题: react入门之二--开发篇

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