prop实例

<div id="app"></div>

<script src="bower_components/react/react.min.js"></script>
<script src="bower_components/react/react-dom.min.js"></script>
<script src="lib/babel-core/browser.min.js"></script>
<script type="text/babel">
    var MessageBox = React.createClass({
        getInitialState: function () {
            return {
                isVisible: true,
                titleMessage: '你好世界(来自state哦)',
                subMessages: [
                    '我会代码搬砖',
                    '以及花式搬砖',
                    '不说了,工头叫我回去搬砖了。。。。。'
                ]
            }
        },
        render: function () {
            return (
                <div>
                    <h1>{this.state.titleMessage}</h1>
                    <SubMessage messages={this.state.subMessages} />
                </div>
            )
        }
    });
    var SubMessage = React.createClass({
        propTypes: {
            messages: React.PropTypes.array.isRequired
        },
        getDefaultProps: function () {
            return {
                messages: ['默认的子消息'] // 防止this.props.messages不存在
            }
        },
        render: function () {
            var msgs = [];
            this.props.messages.forEach(function (msg, index) {
                msgs.push(
                        <p>码农说:{msg}</p>
                );
            });

            return (
                <div>{msgs}</div>
            )
        }
    });

    var messageBox = ReactDOM.render(
        <MessageBox/>,
        document.getElementById('app')
    );
</script>

表单监听事件(非常麻烦,下一段代码有替代的)

<div id="app"></div>

<script src="bower_components/react/react.min.js"></script>
<script src="bower_components/react/react-dom.min.js"></script>
<script src="lib/babel-core/browser.min.js"></script>
<script type="text/babel">
    var FormApp = React.createClass({
        getInitialState: function () {
            return {
                inputValue: 'input value',
                selectValue: 'A',
                radioValue: 'B',
                textareaValue: 'some text here'
            }
        },
        // 监听表单值的改变
        handleInput: function (e) {
            this.setState({
                inputValue: e.target.value
            });
        },
        handleSelect: function (e) {
            this.setState({
                selectValue: e.target.value
            });
        },
        handleSubmit: function (e) {
            e.preventDefault();
            console.log('form submit');
            console.log(e);
        },
        render: function () {
            return (
                <div>
                    <form action="" onSubmit={this.handleSubmit}>
                        <input type="text" value={this.state.inputValue} onChange={this.handleInput}/>
                        <select name="" id="" value={this.state.selectValue} onChange={this.handleSelect}>
                            <option value="A">A</option>
                            <option value="B">B</option>
                            <option value="C">C</option>
                            <option value="D">D</option>
                            <option value="E">E</option>
                        </select>
                        <br/>
                        <p>radio button!</p>
                        <input type="radio" name="goodRadio" value="A"/>
                        <input type="radio" name="goodRadio" defaultChecked value="B"/>
                        <input type="radio" name="goodRadio" value="C"/>
                        <br/>
                        <input type="checkbox" name="goodRadio" value="A"/>
                        <input type="checkbox" name="goodRadio" value="B"/>
                        <input type="checkbox" name="goodRadio" defaultChecked value="C"/>
                        <br/>
                        <textarea name="" id="" cols="30" rows="10" value={this.state.textareaValue}>

                        </textarea>
                        <button type="submit">提交</button>
                    </form>
                </div>
            )
        }
    });

    var messageBox = ReactDOM.render(
        <FormApp/>,
        document.getElementById('app')
    );
</script>

指向ref

var FormApp = React.createClass({
        getInitialState: function () {
            return {
                inputValue: 'input value',
                selectValue: 'A',
                radioValue: 'B',
                checkboxValues: ['C'],
                textareaValue: 'some text here'
            }
        },
        handleSubmit: function (e) {
            e.preventDefault();
            console.log('form submit');
            var formData = {
                input: this.refs.myInput.value,
                select: this.refs.mySelect.value,
                textarea: this.refs.myTextarea.value,
                radio: this.state.radioValue,
                check: this.state.checkboxValues
            };
            console.log('the form result is: ');
            console.log(formData);

        },
        handleRadio: function (e) {
            this.setState({
                radioValue: e.target.value
            });
        },
        handleCheck: function (e) {
            var checkboxValues = this.state.checkboxValues.slice();
            var newVal = e.target.value;
            var index = checkboxValues.indexOf(newVal);

            if(index == -1) {
                checkboxValues.push(newVal);
            } else {
                // 存在了删除掉
                checkboxValues.splice(index, 1);
            }

            this.setState({
                checkboxValues: checkboxValues
            });
        },
        render: function () {
            return (
                <div>
                    <form action="" onSubmit={this.handleSubmit}>
                        <input ref="myInput" type="text" defaultValue={this.state.inputValue}/>
                        选项:
                        <select name="" id="" defaultValue={this.state.selectValue} ref="mySelect">
                            <option value="A">A</option>
                            <option value="B">B</option>
                            <option value="C">C</option>
                            <option value="D">D</option>
                            <option value="E">E</option>
                        </select>
                        <br/>
                        <p>radio button!</p>
                        <RadioButtons handleRadio={this.handleRadio} />
                        <br/>
                        <CheckboxButtons handleCheck={this.handleCheck} />
                        <br/>
                        <textarea name="" id="" cols="30" rows="10" defaultValue={this.state.textareaValue} ref="myTextarea">

                        </textarea>
                        <button type="submit">提交</button>
                    </form>
                </div>
            )
        }
    });

    var RadioButtons = React.createClass({
        render: function () {
            return (
                <div>
                    A
                    <input onChange={this.props.handleRadio} type="radio" name="goodRadio" value="A"/>
                    B
                    <input onChange={this.props.handleRadio} type="radio" name="goodRadio" defaultChecked value="B"/>
                    C
                    <input onChange={this.props.handleRadio} type="radio" name="goodRadio" value="C"/>
                </div>
            );
        }
    });

    var CheckboxButtons = React.createClass({
        render: function () {
            return (
                <div>
                    A
                    <input onChange={this.props.handleCheck} type="checkbox" name="A" value="A"/>
                    B
                    <input onChange={this.props.handleCheck} type="checkbox" name="B" value="B"/>
                    C
                    <input onChange={this.props.handleCheck} type="checkbox" name="C" defaultChecked value="C"/>
                </div>
            )
        }
    });

    var messageBox = ReactDOM.render(
        <FormApp/>,
        document.getElementById('app')
    );

React(一)基础点的更多相关文章

  1. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

  2. 十分钟介绍mobx与react

    原文地址:https://mobxjs.github.io/mobx/getting-started.html 写在前面:本人英语水平有限,主要是写给自己看的,若有哪位同学看到了有问题的地方,请为我指 ...

  3. RxJS + Redux + React = Amazing!(译一)

    今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https:/ ...

  4. React 入门教程

    React 起源于Facebook内部项目,是一个用来构建用户界面的 javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内 ...

  5. 通往全栈工程师的捷径 —— react

    腾讯Bugly特约作者: 左明 首先,我们来看看 React 在世界范围的热度趋势,下图是关键词“房价”和 “React” 在 Google Trends 上的搜索量对比,蓝色的是 React,红色的 ...

  6. 2017-1-5 天气雨 React 学习笔记

    官方example 中basic-click-counter <script type="text/babel"> var Counter = React.create ...

  7. RxJS + Redux + React = Amazing!(译二)

    今天,我将Youtube上的<RxJS + Redux + React = Amazing!>的后半部分翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: ht ...

  8. React在开发中的常用结构以及功能详解

    一.React什么算法,什么虚拟DOM,什么核心内容网上一大堆,请自行google. 但是能把算法说清楚,虚拟DOM说清楚的聊聊无几.对开发又没卵用,还不如来点干货看看咋用. 二.结构如下: impo ...

  9. React的使用与JSX的转换

    前置技能:Chrome浏览器   一.拿糖:React的使用 React v0.14 RC 发布,主要更新项目: 两个包: React 和 React DOM DOM node refs 无状态的功能 ...

随机推荐

  1. 我与solr(五)--关于schema.xml中的相关配置的详解

    先把文件的代码贴上来: <?xml version="1.0" encoding="UTF-8" ?> <!-- 版权说明... --> ...

  2. 【九度OJ】题目1061:成绩排序

    题目描述: 有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息. 输入: 测试数据有多组,每组输入 ...

  3. Python操控mysql数据库

    导入库——MySQLdb 1.链接MySQL conn=MySQL.connect(host=',port=3306) 此处主机用ip地址,不能使用'localhost',不然会显示链接错误. 2.选 ...

  4. CentOS6.5修改yum源

    在安装完CentOS后一般需要修改yum源,才能够在安装更新rpm包时获得比较理想的速度.国内比较快的有163源.sohu源.这里以163源为例子. 1, cd /etc/yum.repos.d 2. ...

  5. 转行IT行业的心路历程2

    2011/07-2016/12 11年毕业之后阴差阳错的到了宁波慈星股份,学习了针织机械.当初的想法很简单从沈阳到南方,因为南方小厂多机会多,因为我的目标就是当老板(呵呵,大部分的人的目标都是吧,现在 ...

  6. 利用CSS3实现圆角的outline效果的教程

    一.首先,outline是个很牛的东西1. border近亲outline和border是近亲,为什么这么讲呢?首先,都是给元素外面套框框的:其次,支持的属性值几乎都是一样的,例如,outline-s ...

  7. PYTHON学习之路_PYTHON基础(3)

    学习内容: 1.Python字典 2.Python集合 3.Python字符编码 4.Python文件操作 5.Python实例 一.Python字典 1.定义: dic1={'name':'alex ...

  8. 动态代理模式和AOP探究

    java强大的反射机制给动态代理带来了可能.能够自由穿梭在类与方法之间.简直神通广大. 动态代理的一个小例子,顺便看看神奇的AOP是如何实现的.代码如下: 首先声明的是一个接口Dog类 package ...

  9. MVVM和MVC的区别

    MVVM(Model-View-ViewModel) 优点:低耦合:可重用:独立开发:可测试 即,将页面与数据分离的模式:将数据绑定工作放到javaScript文件中实现,javaScript文件的主 ...

  10. jQuery树形菜单(1)jquery.treeview

    jQuery的树形插件资料URL:http://bassistance.de/jquery-plugins/jquery-plugin-treeview/从该网站Download得到jquery.tr ...