首页 技术 正文
技术 2022年11月15日
0 收藏 443 点赞 2,997 浏览 4631 个字

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')    );
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,580
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918