博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react 12个实用demo(来自github)
阅读量:5829 次
发布时间:2019-06-18

本文共 4502 字,大约阅读时间需要 15 分钟。

  hot3.png

1.Hello, world!

ReactDOM.render(    

Hello, world!

, document.getElementById('example'));

2.遍历数组

var names = ['Alice', 'Emily', 'Kate'];ReactDOM.render(    
{ names.map(function (name) { return
Hello, {name}!
}) }
, document.getElementById('example'));

3.数组渲染

var arr = [    

Hello world!

,

React is awesome

,];ReactDOM.render(
{arr}
, document.getElementById('example'));

4.属性值传递

var HelloMessage = React.createClass({    render: function() {      return 

Hello {this.props.name}

; }});ReactDOM.render(
, document.getElementById('example'));

5.子元素传递

var NotesList = React.createClass({    render: function() {      return (        
    { React.Children.map(this.props.children, function (child) { return
  1. {child}
  2. ; }) }
); }});ReactDOM.render(
hello
world
, document.body);

6.属性类型限制

var data = 123;var MyTitle = React.createClass({    propTypes: {      title: React.PropTypes.string.isRequired,    },        render: function() {      return 

{this.props.title}

; }});ReactDOM.render(
, document.body);

7.事件

var MyComponent = React.createClass({  handleClick: function() {    this.refs.myTextInput.focus();  },  render: function() {    return (      
); }});ReactDOM.render(
, document.getElementById('example'));

8.利用state制作LikeButton

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 (        

You {text} this. Click to toggle.

); }});ReactDOM.render(
, document.getElementById('example'));

9.利用state制作input

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 (        

{value}

); }});ReactDOM.render(, document.body);

10.定时器

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 (        
Hello {this.props.name}
); }});ReactDOM.render(
, document.body);

11.与jquery配合实现ajax

var UserGist = React.createClass({  getInitialState: function() {    return {      username: '',      lastGistUrl: ''    };  },  componentDidMount: function() {    $.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: function() {    return (      
{this.state.username}'s last gist is
here.
); }});ReactDOM.render(
, document.body);

12.利用state实现一个组件的loading/error画面

var RepoList = React.createClass({  getInitialState: function() {    return {      loading: true,      error: null,      data: null    };  },  componentDidMount() {    this.props.promise.then(      value => this.setState({loading: false, data: value}),      error => this.setState({loading: false, error: error}));  },  render: function() {    if (this.state.loading) {      return Loading...;    }    else if (this.state.error !== null) {      return Error: {this.state.error.message};    }    else {      var repos = this.state.data.items;      var repoList = repos.map(function (repo) {        return (          
  • {repo.name} ({repo.stargazers_count} stars)
    {repo.description}
  • ); }); return (

    Most Popular JavaScript Projects in Github

      {repoList}
    ); } }});ReactDOM.render(
    , document.body);

    转载于:https://my.oschina.net/wolfx/blog/625338

    你可能感兴趣的文章
    Java设计模式
    查看>>
    一文读懂 AOP | 你想要的最全面 AOP 方法探讨
    查看>>
    Spring Cloud 微服务分布式链路跟踪 Sleuth 与 Zipkin
    查看>>
    ORM数据库框架 SQLite 常用数据库框架比较 MD
    查看>>
    华为OJ 名字美丽度
    查看>>
    微信公众号与APP微信第三方登录账号打通
    查看>>
    onchange()事件的应用
    查看>>
    Windows 下最佳的 C++ 开发的 IDE 是什么?
    查看>>
    软件工程师成长为架构师必备的十项技能
    查看>>
    python 异常
    查看>>
    百度账号注销
    查看>>
    mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
    查看>>
    BIEE Demo(RPD创建 + 分析 +仪表盘 )
    查看>>
    Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程
    查看>>
    基本概念复习
    查看>>
    重构第10天:提取方法(Extract Method)
    查看>>
    Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
    查看>>
    解决pycharm在ubuntu下搜狗输入法一直固定在左下角的问题
    查看>>
    多线程day01
    查看>>
    react-native 模仿原生 实现下拉刷新/上拉加载更多(RefreshListView)
    查看>>