React免费视频教程-表单的应用 (共4集)

第1节:表单的事件响应和bind复用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>表单的事件响应和bind复用</title>
    <script src="./common/react.js"></script>
    <script src="./common/react-dom.js"></script>
    <script src="http://cdn.bootcss.com/babel-core/5.8.38/browser.min.js"></script>
</head>
<body>
    <div id="demo" >
        <script type="text/babel">
        var  MyForm = React.createClass({
           getInitialState:function(){
            return{
                username:'',
                gender:'man',
                checked:true
            }
           },
           handleChange:function(name,event){
                var newState={};
                // checked 是ture,name=event.target.checked,如果是false,name=event.target.value.
                console.log('event.target.checked:',event.target.checked);
                console.log('event.target.value',event.target.value);
                console.log('name',name);
                
                newState[name]=name=="checked"?event.target.checked:event.target.value;
                this.setState(newState);
                console.log('newState:',newState);
           },        
           render:function(){
               return (<form onSubmit={this.submitHandler}>
               <label htmlFor="username">情输入您的姓名:</label>
               <input type="text" name="username" onChange={this.handleChange.bind(this,"username")} value={this.state.username} id="username" />
               <br/>
               <label htmlFor="checkbox">是或否:</label>
               <input  type="checkbox" value="是否" name="checked" id="checkbox" onChange={this.handleChange.bind(this,"checked")} checked={this.state.checked} />
               <br/>
               <label htmlFor="username">请选择</label>
               <select name="gender" onChange={this.handleChange.bind(this,"gender")} value={this.state.gender}>
                    <option value="man">帅哥</option>
                    <option value="woman">美女</option>
               </select>
               <br/>
               <button type="submit">提交</button>
               </form>)
           }
       });


       ReactDOM.render(<MyForm/>,document.getElementById('demo'))


        
        
        
        </script>


    </div>    
</body>
</html>
事件响应

表单组件可以通过设置onChange()回调函数来监听组件变化。当用户的交互行文导致一下变化时,onChange()被执行并通过浏览器做出响应。

  • <input>或<textarea>的value发生变化。
  • <input>的checked状态改变。
  • <option>的selected 状态改变。
bind复用

bind方法为事件相应函数增加一个参数,事件响应函数通过该参数识别事件源。

我们作一个文本框,并使用bind进行复用,我希望你自己可以亲自动手敲一下代码,加深对bind复用的理解。

 handleChange:function(name,event){
                var newState={};
                newState[name]=name=="checked"?event.target.checked:event.target.value;
                this.setState(newState);
                console.log(newState);
           },

newState[name]=(name=="checked")?event.target.checked:event.target.value;
onChange={this.handleChange.bind(this,"username")

handleChange就这函数的调用.没什么特别.

微信截图_20180128224821.png

第2节:React表单name复用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,205评论 0 1
  •   JavaScript 最初的一个应用,就是分担服务器处理表单的责任,打破处处依赖服务器的局面。   尽管目前的...
    霜天晓阅读 691评论 0 3
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,862评论 1 18
  • 管理的综合问题 全球化对组织的影响体现在全球化组织有不同类型。应对全球化的方法有全球外包和国内生产,国外销售。 社...
    Distance_265f阅读 328评论 0 0
  • 现在OC与swift混编的项目越来越多,这就涉及到两种语言互相调用方法的问题。 在swift调用OC方法上还是比较...
    shiyueZ阅读 8,740评论 2 6