zoukankan      html  css  js  c++  java
  • reactjs入门到实战(八)----表单组件的使用

    表单组件支持几个受用户交互影响的属性:

    • value,用于 <input><textarea> 组件。
    • checked,用于类型为 checkbox 或者 radio 的 <input> 组件。
    • selected,用于 <option> 组件。

    在 HTML 中,<textarea> 的值通过子节点设置;在 React 中则应该使用 value 代替。

    表单组件可以通过 onChange 回调函数来监听组件变化。当用户做出以下交互时,onChange 执行并通过浏览器做出响应:

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

    和所有 DOM 事件一样,所有的 HTML 原生组件都支持 onChange 属性,而且可以用来监听冒泡的 change 事件

    受限组件:你修改之后不起作用需要通过oncahnge来响应

    input textarea  select是一样的

    var Hello = React.createClass({
           render:function(){
             return(
                <input type="text" value="Hello" />
             );
           }
         });
    
    
         ReactDOM.render(
          < Hello />,document.getElementById('example')
         )

    不起作用的:需要改成

    <script type="text/babel">
         var Hello = React.createClass({
           getInitialState: function() {
              return {value: 'Hello!'};
          },
          handleChange: function(event) {
            this.setState({value: event.target.value});
          },
          render: function() {
            return <input type="text" value={this.state.value} onChange={this.handleChange} />;
          }
         });
    
    
         ReactDOM.render(
          < Hello />,document.getElementById('example')
         )
      </script>
    <script type="text/babel">
         var Hello = React.createClass({
           getInitialState: function() {
              return {value: 'Hello!'};
          },
          handleChange: function(event) {
            this.setState({value: event.target.value});
          },
          render: function() {
            return <textarea type="text" value={this.state.value} onChange={this.handleChange} />;
          }
         });
    
    
         ReactDOM.render(
          < Hello />,document.getElementById('example')
         )
      </script>
    <script type="text/babel">
         var Hello = React.createClass({
           getInitialState: function() {
              return {value: 'bj'};
          },
          handleChange: function(event) {
            this.setState({value: event.target.value});
          },
          render: function() {
            return (<select  id="city" name="city" value={this.state.value} onChange={this.handleChange} >
                        <option value='bj'>北京</option>
                        <option value='sh'>上海</option>
                        <option value='tj'>天津</option>
                    </select>
          );
          }
         });
    
    
         ReactDOM.render(
          < Hello />,document.getElementById('example')
         )
      </script>
    <script type="text/babel">
         var Hello = React.createClass({
           getInitialState: function() {
              return {male: true};
          },
          handleGender: function(e) {
         var male = !!(e.target.value == 'MALE');
         this.setState({
           male: male
         });
       },
          render: function() {
            return (
              <input type='radio' name='gender' checked={this.state.male} onChange={this.handleGender} value='MALE' />
             <input type='radio' name='gender' checked={!this.state.male} onChange={this.handleGender} value='FEMALE' />
          );
          }
         });
    
    
         ReactDOM.render(
          < Hello />,document.getElementById('example')
         )
      </script>

    不受限组件:渲染出来的元素直接反应用户输入

  • 相关阅读:
    MD5值算法原理
    AUTH过程
    锁定应用,解锁应用,锁卡,解卡,更改密码指令
    借/贷记卡的应用
    借记卡,贷记卡,准贷记卡三者的区别
    PBOC2.0与PBOC3.0的区别
    ED/EP简介
    与恒宝有关的一些常用知识
    java卡与native卡的区别
    计算机组和域的区别
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/5564173.html
Copyright © 2011-2022 走看看