• 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>

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

  • 相关阅读:
    Android开发之适配器-ListView适配器的重复数据
    Android开发之TextView的下划线添加
    Android 自定义View修炼-Android开发之自定义View开发及实例详解
    Android 开发之自定义Dialog及UI的实现
    Android开发之ContentProvider(内容提供者)
    XC文件管理器(Android应用)
    高效 告别996,开启java高效编程之门 4-1普通码农与风骚码农资源关闭PK
    高效 告别996,开启java高效编程之门 4-2垃圾回收与物理资源释放
    高效 告别996,开启java高效编程之门 3-29实战案例五:排序
    高效 告别996,开启java高效编程之门 3-28实战案例四:分组
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/5564173.html
Copyright © 2020-2023  润新知