ReactJS学习系列课程(React 表单应用)
来源:互联网 发布:手机联系人数据恢复 编辑:程序博客网 时间:2024/05/01 11:13
到目前为止,我们已经学习了很多react的特性,对于表单的使用其实也没有大的区别,下面我们为了更加熟悉React, 我们纯当练习:我们看看代码吧:
我们创建一个简单form:
//约束组件 var MyForm = React.createClass({ getInitialState: function () { return { helloTo: "Hello World" }; }, handleChange: function (event) { this.setState({ helloTo: event.target.value.toUpperCase() }); }, submitHandler: function (event) { event.preventDefault(); alert(this.state.helloTo); }, render: function () { return( <form onSubmit={this.submitHandler}> <input type="text" value={this.state.helloTo} onChange={this.handleChange}/> <br/> <button type="submit">Speak</button> </form> ) } }) ReactDOM.render(<MyForm />, document.getElementById('app'));
表单的select处理:
var MyForm = React.createClass({ getInitialState: function () { return { options: ["B"] } }, handleChange: function (event) { var checked = []; var sel = event.target; for (var i = 0; i < sel.length; i++) { var option = sel.options[i]; if (option.selected) { checked.push(option.value); } } this.setState({options: checked}); }, submitHandler: function (event) { event.preventDefault(); alert(this.state.options); }, render: function () { return ( <form onSubmit={this.submitHandler}> <label classsName="name">please select:</label> <br /> <select multiple="true" value={this.state.options} onChange={this.handleChange}> <option value="A">First Option</option> <option value="B">Second Option</option> <option value="C">Third Option</option> </select> <br/> <button type="submit">Speak</button> </form> ) } }) ReactDOM.render(<MyForm />, document.getElementById('app'));
表单name属性处理
//使用DOMNode的name属性来判断需要更新哪个组件的状态 var MyForm = React.createClass({ getInitialState: function () { return { given_name: "", family_name: "" }; }, handleChange: function (event) { var newState = {}; newState[event.target.name] = event.target.value; this.setState(newState); }, submitHandler: function (event) { event.preventDefault(); var words = [ "Hi", this.state.given_name, this.state.family_name ]; alert(words.join(" ")); }, render: function () { return <form onSubmit={this.submitHandler}> <label htmlFor="given_name">Given Name:</label> <br /> <input type="text" name="given_name" value={this.state.given_name} onChange={this.handleChange}/> <br /> <label htmlFor="family_name">Family Name:</label> <br /> <input type="text" name="family_name" value={this.state.family_name} onChange={this.handleChange}/> <br /> <button type="submit">Speak</button> </form>; } }); ReactDOM.render(<MyForm />, document.getElementById('app'));
linkState的使用:
//使用React的addons中插件 var MyForm = React.createClass({ mixins: [React.addons.LinkedStateMixin], getInitialState: function () { return { given_name: "", family_name: "" }; }, submitHandler: function (event) { event.preventDefault(); var words = [ "Hi", this.state.given_name, this.state.family_name ]; alert(words.join(" ")); }, render: function () { return <form onSubmit={this.submitHandler}> <label htmlFor="given_name">Given Name:</label> <br /> <input type="text" name="given_name" valueLink={this.linkState('given_name')}/> <br /> <label htmlFor="family_name">Family Name:</label> <br /> <input type="text" name="family_name" valueLink={this.linkState('family_name')}/> <br /> <button type="submit">Speak</button> </form>; } }); ReactDOM.render(<MyForm />, document.getElementById('app'));
自己复制代码尝试一下吧,React的世界很精彩!
0 0
- ReactJS学习系列课程(React 表单应用)
- ReactJS学习系列课程(React react常用架构分析)
- ReactJS学习系列课程(React学习总结)
- ReactJS学习系列课程2(React环境搭建)
- ReactJS学习系列课程3(React State状态)
- ReactJS学习系列课程(React ES6语法使用)
- ReactJS学习系列课程(React Router 使用)
- ReactJS学习系列课程(React Http网络数据读取)
- ReactJS学习系列课程(React ref的使用)
- ReactJS学习系列课程(React mixin的使用)
- ReactJS学习系列课程(React 组件的组合使用)
- ReactJS学习系列课程(React 动画使用)
- ReactJS学习系列课程(React 调试工具集)
- ReactJS学习系列课程(React webpack使用)
- ReactJS学习系列课程(React Redux使用)
- ReactJS学习系列课程(React 整体流程使用案例)
- ReactJS学习系列课程(React ref的使用)
- ReactJS学习系列课程附加(Flux应用架构)
- 第一次打字练习
- Java 正则表达式
- POJ-3617 Best Cow Line
- linux 中常用编译参数解析
- 姓名测试代码
- ReactJS学习系列课程(React 表单应用)
- iOS 10 个实用小技巧(总有你不知道的和你会用到的)
- 天才小毒妃 > 第901章 宁静,你赢了
- EasyDarwin开源流媒体服务器如何实现按需推送直播的
- PXC在插入数据时其它节点发生mysql crash并报UTC - mysqld got signal 11错误处理
- 将二叉搜索树转成要一个排序的双向链表
- MySQL数据库连接池
- Volley异常Volley NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException
- 去掉EditText的边框和下滑线