hello React.js

转载地址:

http://www.ruanyifeng.com/blog/2015/03/react.html

 /**
 * Created by Administrator on 2016-12-8.
 */
import React from 'react';
import ReactDOM from 'react-dom';
var names = ['Alice', 'Emily', 'Kate'];
/*ReactDOM.render()*/
ReactDOM.render(
    <h1>Hello, world!</h1>,
    document.getElementById('example')
);

/*JSX 语法*/
ReactDOM.render(
    <div>
        {
            names.map(function (name) {
                return <div>Hello, {name}!</div>
            })
        }
    </div>,
    document.getElementById('example')
);

var arr = [
    <h1>Hello world!</h1>,
    <h2>React is awesome</h2>,
];
ReactDOM.render(
    <div>{arr}</div>,
    document.getElementById('example')
);

/*组件*/
var HelloMessage = React.createClass({
    render: function() {
        return <h1>Hello {this.props.name}</h1>;
    }
});

ReactDOM.render(
    <HelloMessage name="John" />,
    document.getElementById('example')
);

/*this.props.children*/

var NotesList = React.createClass({
    render: function() {
        return (
            <ol>
                {
                    React.Children.map(this.props.children, function (child) {
                        return <li>{child}</li>;
                    })
                }
            </ol>
        );
    }
});

ReactDOM.render(
    <NotesList>
        <span>hello</span>
        <span>world</span>
    </NotesList>,
    document.getElementById('example')
);

/*PropTypes*/

var MyTitle = React.createClass({
    propTypes: {
        title: React.PropTypes.string.isRequired,
    },

    render: function() {
        return <h1> {this.props.title} </h1>;
    }
});
var data = "string!";
ReactDOM.render(
    <MyTitle title={data} />,
    document.getElementById('example')
);
/*获取真实的DOM节点*/
var MyComponent = React.createClass({
    handleClick: function() {
        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>
        );
    }
});

ReactDOM.render(
    <MyComponent />,
    document.getElementById('example')
);

/*this.state*/
var LikeButton = React.createClass({
    getInitialState: function() {
        return {liked: true};
    },
    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>
        );
    }
});

ReactDOM.render(
    <LikeButton />,
    document.getElementById('example')
);

/*表单*/
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>
        );
    }
});

ReactDOM.render(<Input/>, document.getElementById('example'));

/*组件的生命周期*/
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>
        );
    }
});

ReactDOM.render(
    <Hello name="world"/>,
    document.getElementById('example')
);

/*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 (
            <div>
                {this.state.username}'s last gist is
                <a href={this.state.lastGistUrl}>here</a>.
            </div>
        );
    }
});

ReactDOM.render(
    <UserGist source="https://api.github.com/users/octocat/gists" />,
    document.getElementById('example')
);
时间: 2024-09-25 17:48:08

hello React.js的相关文章

使用 React.js 的渐进式 Web 应用程序:第 4 部分 - 渐进增强

本文讲的是使用 React.js 的渐进式 Web 应用程序:第 4 部分 - 渐进增强, 渐进增强 (Progressive Enhancement) 渐进增强 (Progressive Enhancement) 意味着所有人都可以在任意一款浏览器中访问页面的基本内容和功能,在那些不支持某些特性的浏览器中访问时,体验上有所退化但仍然是可用的. - Lighthouse 一个比较完善的 Web 应用要对它所面对的市场的大部分用户是可用的.如此,如果一个 Web 应用遵循弹性开发的理念,那么它可以

使用 React.js 的渐进式 Web 应用程序:第 3 部分 - 离线支持和网络恢复能力

本文讲的是使用 React.js 的渐进式 Web 应用程序:第 3 部分 - 离线支持和网络恢复能力, 本期是新系列的第三部分,将介绍使用 Lighthouse 优化移动 web 应用传输的技巧. 并看看如何使你的 React 应用离线工作. 一个好的渐进式 Web 应用,不论网络状况如何都能立即加载,并且在不需要网络请求的情况下也能展示 UI (即离线时). 再次访问 Housing.com 渐进式 Web 应用(使用 React 和 Redux 构建)能够立即加载离线缓存的 UI. 我们可

React.js 新手村教程

本文讲的是React.js 新手村教程, 正如你能从标题猜到的,这篇文章的目标是给那些有很少编程经验的读者的.比如,像我这样的人:因为迄今为止,我才探索了编程世界6个月.所以,这将是一篇新手村教程! 你只需要拥有对 HTML 和 CSS 的理解,以及基本的 JavaScript(JS)知识就能看懂本文. 注意:在接下来的例子中,我们将会利用 ES6 提供的新能力,来简化写 JS 代码的过程.然而,你也能完全使用 ES5 来写 React. 预计阅读时间9分钟 什么是 React ? React

三大JS框架的较量:Angular.js与React.js与Ember.js

通过选择合适的JavaScript框架来更好适配你的项目需求,这有利于提高你的开发能力与web apps的竞争力. 然后,你可以为基于JavaScript的应用或者网站想个极佳的主意.选择合适框架应该对你项目的成功有显著效果.它可以推到你及时完成项目,并且有助于你将来维护代码.JavaScript框架,比如Angular.js,Ember.js,或者React.js,能提供很好的代码框架,并且保持代码的组织性,从而使得你的app更具灵活性与可扩展性,开发过程更加容易. JavaScript场景的

使用 React.js 的渐进式 Web 应用程序:第 2 部分 - 页面加载性能

本文讲的是使用 React.js 的渐进式 Web 应用程序:第 2 部分 - 页面加载性能, 系列第二篇,来看看基于 React 路由分块的页面加载优化. 原文地址:Progressive Web Apps with React.js: Part 2 - Page Load Performance 原文作者:Addy Osmani 译文出自:掘金翻译计划 译者:markzhai 校对者:Romeo0906,AceLeeWinnie 使用 React.js 的渐进式 Web 应用程序:第 2 部

构建React.js应用的十佳UI框架,都在这了!

构建你的下一个 React.js APP,有这些优秀的 UI 框架就够了. 1.Material-UI 一套实现 Google Material Design 的 React 组件 同时,它也是 React 的第一批 UI 工具套件之一.Material-UI 包含你需要的所有组件(甚至更多). Material-UI 预定义的调色板和 <MuiThemeProvider> 可配置性极高,允许为 APP 自定义颜色主题. Material-UI 之前的版本个人认为有一些性能问题,但从 3.0

React Router —— React.js 的路由解决方案

React Router 一个用于 React.js 的路由解决方案(routing solution).它轻松可以同步你的 app 和 URL,同时给嵌套,转换,和服务端渲染一流的支持. 特性: 嵌套视图映射到嵌套路由 模块化构建路由层级 同步和异步转移挂钩 转换中止/重定向/重试 动态 segments 查询参数 当 .active 类的路由活动时可以自动链接 Multiple root routes Hash 或 HTML5 历史 (含备份) URLs 声明重定向路由 声明未找到路由 浏览

Morpheus —— React.js 创建新一代web发布平台

Morpheus 是用 React.js 创建的新一代 web 发布平台. Morpheus 在第一次加载完全是在服务器端渲染.当一切完成后,React 会将事件连接到 DOM 上,这样,用户就能享受到单页应用程序的好处,在看到内容之前无需等待漫长乏味的 spinners . 文章转载自 开源中国社区 [http://www.oschina.net]

React.js入门学习第一篇_javascript技巧

一.JSX介绍 ①定义 JSX=JavaScript XML,是一种在React组件内部构建标签的类XML语法.React在不使用JSX的情况下一样可以工作,但是使用JSX可以提高组件的可读性,增强JS语义,结构清晰,抽象程度高,代码模块化.因此推荐在React中使用JSX. ②特点 1.元素名首字母大写 2.符合嵌套规则 3.可以写入求值表达式 4.驼峰式命名 5.不能使用javascript原生函数的一些关键词,如for和class.需要替换成htmlFor和className ③使用方法

基于React.js实现原生js拖拽效果引发的思考_javascript技巧

一.起因&思路 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖拽效果. 首先,其实拖拽效果的思路是很简单的.主要就是三个步骤: 1.onmousedown的时候,启动可拖拽事件,记录被拖拽元素的原始坐标参数. 2.onmousemove的时候,实时记录鼠标移动的距离,结合被拖拽元素第一阶段的坐标参数,计算并设置新的坐标值. 3.onmouseup的时候,关闭可拖拽事件,记录新的坐标值. 注意:这里主要是通过绝对定位的top和left来确定元素的位置