ReactJS结合ES6入门Template

一、前言

二、介绍

  1. ReactJS
  2. ECMAScript 6

三、入门DEMO

  1. "Hello,XXX“ 输出

  ES5写法

<div id="example"></div>
    <script type="text/jsx">
      React.render(
        <h1>Hello, world!</h1>,
        document.getElementById(‘example‘)
      );
 </script>

  ES6

import React,{Component} from ‘react‘;
class HelloMessage extends Component{
  constructor() {
    super();
  }
  render(){
    return <h1>Hello {this.props.name}</h1>;
  }
}
class Output extends Component{
  constructor() {
    super();
  }
  render(){

    return (
      <div>
          <HelloMessage name="John" />
      </div>
    );
  }
}
export default Output;

  2. 数组遍历显示

  ES5

 

<script type="text/jsx">
      var names = [‘Alice‘, ‘Emily‘, ‘Kate‘];

      React.render(
        <div>
        {
          names.map((name)=>return <div>Hello, {name}!</div>; );
        }
        </div>,
        document.getElementById(‘example‘)
      );
    </script>

<script type="text/jsx">
      var arr = [
        <h1>Hello world!</h1>,
        <h2>React is awesome</h2>,
      ];
      React.render(
        <div>{arr}</div>,
        document.getElementById(‘example‘)
      );
    </script>

  ES6

class RepeatArray extends Component{
  constructor() {
    super();
  }
  render(){
    var arr = [
      <h1>Hello world!</h1>,
      <h2>React is awesome</h2>,
    ];
    var names = [‘Alice‘, ‘Emily‘, ‘Kate‘];
    return (
      <div>
      {arr}
      {
        names.map((name) =>{return <div>Hello, {name}!</div>;} )
      }
      </div>
    );
  }
}
export default RepeatArray;

  3. ol与li的实现

  ES5

<script type="text/jsx">
      var NotesList = React.createClass({
        render: function() {
          return (
            <ol>
              {
                this.props.children.map(function (child) {
                  return <li>{child}</li>
                })
              }
            </ol>
          );
        }
      });

      React.render(
        <NotesList>
          <span>hello</span>
          <span>world</span>
        </NotesList>,
        document.body
      );
    </script>

  ES6

class RepeatLi extends Component{
  render(){
    return (
      <ol>
      {
        this.props.children.map((child)=>{return <li>{child}</li>})
      }
      </ol>
    );
  }
}
class RepeatArray extends Component{
  constructor() {
    super();
  }
  render(){
    return (
      <div>

      <RepeatLi>
        <span>hello</span>
        <span>world</span>
      </RepeatLi>

      </div>
    );
  }
}
export default RepeatArray;

  4. Click事件

  ES5

script type="text/jsx">
var MyComponent = React.createClass({
  handleClick: function() {
    React.findDOMNode(this.refs.myTextInput).focus();
  },
  render: function() {
    return (
      <div>
        <input type="text" ref="myTextInput" />
        <input type="button" value="Focus the text input" onClick={this.handleClick} />
      </div>
    );
  }
});

React.render(
  <MyComponent />,
  document.getElementById(‘example‘)
);
    </script>

  ES6

class FocusText extends Component{
  handleClick(){
    React.findDOMNode(this.refs.myText).focus();
  }
  render(){
    return(
      <div>
        <input type="text" ref="myText" />
        <input type="button" value="focus the text input" onClick={this.handleClick.bind(this)} />
      </div>
    );
  }
}
class RepeatArray extends Component{
  constructor() {
    super();
  }
  render(){
    return (
      <div>
      <FocusText />
      </div>
    );
  }
}
export default RepeatArray;

  5. State的用法,以toggel显示文字为例

  ES5

    <script type="text/jsx">
var LikeButton = React.createClass({
  getInitialState: function() {
    return {liked: false};
  },
  handleClick: function(event) {
    this.setState({liked: !this.state.liked});
  },
  render: function() {
    var text = this.state.liked ? ‘like‘ : ‘haven\‘t liked‘;
    return (
      <p onClick={this.handleClick}>
        You {text} this. Click to toggle.
      </p>
    );
  }
});

React.render(
  <LikeButton />,
  document.getElementById(‘example‘)
);
    </script>

  ES6

class StateUse extends Component{
  constructor(){
    super();
    this.state={
      like:true
    }
  }
  handleClick(){
    this.setState({like:!this.state.like});
  }
  render(){
    var text = this.state.like?‘Like‘:"Unlike";
    return(
      <div>
        <p onClick={this.handleClick.bind(this)}>
        You {text} this.Click the toggle;
        </p>
      </div>
    );
  }
}
class RepeatArray extends Component{
  constructor() {
    super();
  }
  render(){
    return (
      <div>
      <StateUse />
      </div>
    );
  }
}
export default RepeatArray;

  6. onChange事件,以及变量值的同步

  ES5

<script type="text/jsx">
      var Input = React.createClass({
        getInitialState: function() {
          return {value: ‘Hello!‘};
        },
        handleChange: function(event) {
          this.setState({value: event.target.value});
        },
        render: function () {
          var value = this.state.value;
          return (
            <div>
              <input type="text" value={value} onChange={this.handleChange} />
              <p>{value}</p>
            </div>
          );
        }
      });

      React.render(<Input/>, document.body);
    </script>

  ES6

class AsyncText extends Component{
  constructor(){
      super();
      this.state={
        value:‘Hello!‘
      }
  }
  handleChange(e){
    this.setState({value:e.target.value});
  }
  render(){
    var value= this.state.value;
    return(
      <div>
        <input type="text" value={value} onChange={this.handleChange.bind(this)} />
        <p>
          {value}
        </p>
      </div>
    );
  }
}
class RepeatArray extends Component{
  constructor() {
    super();
  }
  render(){
    return (
      <AsyncText />
      </div>
    );
  }
}
export default RepeatArray;

  7. 定时任务事件的嵌入

  ES5

<script type="text/jsx">
      var Hello = React.createClass({
        getInitialState: function () {
          return {
            opacity: 1.0
          };
        },

        componentDidMount: function () {
          this.timer = setInterval(function () {
            var opacity = this.state.opacity;
            opacity -= .05;
            if (opacity < 0.1) {
              opacity = 1.0;
            }
            this.setState({
              opacity: opacity
            });
          }.bind(this), 100);
        },

        render: function () {
          return (
            <div style={{opacity: this.state.opacity}}>
              Hello {this.props.name}
            </div>
          );
        }
      });

      React.render(
        <Hello name="world"/>,
        document.body
      );
    </script>

  ES6

class OpacityWord extends Component{
  constructor(){
    super();
    this.state={
      opacity:1.0
    }
  }
  componentWillMount(){
    let time  =  setInterval(()=>{
      let opacity = this.state.opacity;
      opacity -= 0.5;
      if (opacity<0.1) {
        opacity=1.0;
      }
      this.setState({opacity:opacity});
    }.bind(this),100);
  }
  render(){
    return (
      <div style={{ opacity:this.state.opacity }}>
        Hello, {this.props.name}!
      </div>
    );
  }

}

class RepeatArray extends Component{
  constructor() {
    super();
  }
  render(){
    return (
      <div>
       <OpacityWord />
      </div>
    );
  }
}
export default RepeatArray;

  8. 从服务端获取数据

  ES5

  <script type="text/jsx">
var UserGist = React.createClass({
  getInitialState: function() {
    return {
      username: ‘‘,
      lastGistUrl: ‘‘
    };
  },

  componentDidMount: function() {
    $.get(this.props.source, function(result) {
      var lastGist = result[0];

        this.setState({
          username: lastGist.owner.login,
          lastGistUrl: lastGist.html_url
        });

    }.bind(this));
  },

  render: function() {
    return (
      <div>
        {this.state.username}s last gist is
         <a href={this.state.lastGistUrl}>here</a>.
      </div>
    );
  }
});

React.render(
  <UserGist source="https://api.github.com/users/octocat/gists" />,
  document.body
);
    </script>

  ES6

class UserGist extends Component{
  constructor(){
    super();
    this.state={
      username:‘‘,
      lastGistUrl:‘‘
    }
  }
  componentWillMount(){
    $.get(this.props.source, function(result) {
      var lastGist = result[0];
      //if (this.isMounted()) {
        this.setState({
          username: lastGist.owner.login,
          lastGistUrl: lastGist.html_url
        });
      //}
    }.bind(this));
  }
  render(){
    return(
      <div>
        {this.state.username} ..
        <a href={this.state.lastGistUrl} >here</a>
      </div>
    );
  }
}
class RepeatArray extends Component{
  constructor() {
    super();
  }
  render(){
    return (
      <div>
      <UserGist source="https://api.github.com/users/octocat/gists" />
      </div>
    );
  }
}
export default RepeatArray;
时间: 2024-10-20 20:30:25

ReactJS结合ES6入门Template的相关文章

ES6入门十二:Module(模块化)

webpack4打包配置babel7转码ES6 Module语法与API的使用 import() Module加载实现原理 Commonjs规范的模块与ES6模块的差异 ES6模块与Nodejs模块相互加载 模块循环加载 一.webpack4打包配置babel7转码ES6 1.webpack.config.js 在webpack中配置babel转码其实就是在我之前的webpack配置解析基础上添加babel的加载器,babel的具体转码配置在之前也有一篇详细的博客做了解析: webpack安装与

Vue+koa2开发一款全栈小程序(1.课程介绍+2.ES6入门)

1.课程介绍 1.课程概述 1.做什么? Vue+koa2开发一款全栈小程序 2.哪些功能? 个人中心.图书列表.图书详情.图书评论.个人评论列表 3.技术栈 小程序.Vue.js.koa2.koa-router.mysql 2.课程亮点 1.项目前后端分离开发 Vue+koa2开发一款全栈小程序 2.完整流程,一步不少 注册小程序账号,前后端开发,打包,正式上线 2.小程序环境搭建 1.后台地址: https://mp.weixin.qq.com/ 2.文档地址: https://develo

ES6入门之let和const命令

前言 大家好,我是一只流浪的kk,当你看到这边博客的时候,说明你已经进入了ES6学习的领域了,从本篇博客开始,我将会将自己学习到ES6的相关知识进行整理,方便大家参考和学习,那么我将带你进入第一节的内容学习let和const命令,本篇博客从三个方面进行全方位解析. let命令 首先我们需要学习的是let命令的使用,这个使用非常简单,它其实也是声明变量的一种方式,和var相比我把它的特点总结了如下四点,一起来看看吧! (1):基本用法 <!DOCTYPE html> <html> &

ES6入门之变量的解构赋值(二)

前言 在上一章 ES6入门之let和const命令中我们对ES6的相关语法已经有了初步了解,上一章中我们主要学习了三大部分的内容,let命令的使用,块级作用域,const命令的使用,那么从本篇博客将进一步深入了解ES6中的相关语法,毕竟未来ES6是主流. 本章目标 学会数组的解构赋值 学会对象的解构赋值 学会字符串的解构赋值 学会数值和布尔值的解构赋值 学会函数参数的解构赋值 学会解构赋值的用途 本人对解构赋值的理解:模式匹配,匹配成功获取值,匹配不成功则为undefined,好比开心消消乐一样

es6入门教程完整版

ECMAScript 6入门 <ECMAScript 6入门>是一本开源的JavaScript语言教程,全面介绍ECMAScript 6新引入的语法特性. 作者:阮一峰 授权:署名-非商用许可证 Summary ECMAScript 6入门 ECMAScript 6简介 let和const命令 变量的解构赋值 字符串的扩展 正则的扩展 数值的扩展 数组的扩展 函数的扩展 对象的扩展 Symbol Set和Map数据结构 Proxy和Reflect Iterator和for...of循环 Gen

ES6入门系列三(特性总览下)

0.导言 最近从coffee切换到js,代码量一下子变大了不少,也多了些许陌生感.为了在JS代码中,更合理的使用ES6的新特性,特在此对ES6的特性做一个简单的总览. 1.模块(Module) --Chrome测试不可用 在ES6中,有class的概念,不过这只是语法糖,并没有解决模块化问题.Module功能则是为了解决模块化问题而提出的. 我们可以使用如下方式定义模块: 11_lib.js文件内容 // 导出属性和方法 export var PI = 3.1415926; export fun

ES6入门概览一

一.let const 1.let命令:声明变量仅在块级作用域有效:let实际上为js新增了块级作用域 好处: -不存在变量提升: -内部声明的变量 函数 不会影响外部 -不可重复声明变量 2.const 声明常亮  声明时赋值 声明变量: 1.var 2.function (ES5 全局对象属性) 3.let 4.const 5. import 6.class 二 变量的解构赋值 解构Destructuring: Es6允许按照一定模式 从数组.对象中提取值,对变量进行赋值 三. for...

let和const====均参考阮大神的es6入门

// 解构复制// let [foo,[[bar],baz]] = [1,[[2],3]];// console.log(foo);//1// console.log(bar);//2// console.log(baz);//3 // let [,,third] = ["foo","bar","baz"];// console.log(third)//baz; // let [x,,y] = [1,2,3];// console.log(x+&

es6入门

现在我们来学习一下es6,它现在是一门比较火的语言但是并不是所有的浏览器都兼容E6说的全部特性, 但是我们依旧应该学习一下ES6的语法. 因为兼容性我们得学习一下Babel,它是一个广泛使用的ES6转换器,可以将ES6代码转化为ES5代码,从而在现有环境执行. 变量的声明: let.const let的作用域是代码块,它不允许先弹再定义 会报错 { let a=12; alert(a) //let的作用域是代码块 a=12 } alert(a); //因为let的作用域是代码块 a=undefi