• react之可控组件与不可控组件


    一、不可控组件

    1 <input type="text" defaultvalue="Hello React" />

    如上:defaultvalue的值是固定的,这就是一个不可控组件

    如果要获取input的value值,只有使用ref获取节点来获取值

    二、可控组件

    1 <input type="text" defaultvalue={this.state.value} />

    如上:defaultvalue的值是根据状态确定的,只需要拿到this.state.value的值就可以了,

    这里需要注意一下:使用value的值是不可以修改的,defaultValue的值是可以修改的

    三、可控组件的优点

    1、符合React的数据流

    2、数据存储在state中,便于获取

    3、便于处理数据

     1 import React from 'react';
     2 import ReactDOM from 'react-dom';
     3  
     4 // 不可控组建,要是使用refs属性对DOM节点进行操作
     5 class UnControll extends React.Component {
     6     submitData = (e)=> {
     7         var userInput1 = ReactDOM.findDOMNode(this.refs.userInput1).value;
     8         var userInput2 = ReactDOM.findDOMNode(this.refs.userInput2).value;
     9         alert(userInput1);
    10         alert(userInput2)
    11         e.preventDefault();
    12     }
    13     render(){
    14         return (
    15             <form onSubmit={this.submitData}>
    16                 {/*
    17                     在表单中,使用value是无法改变的,需要使用defaultValue
    18                     checked与defaultChecked同上
    19                 */}
    20                 <input
    21                     type="text"
    22                     value="不可控组件"
    23                     ref="userInput1"
    24                 />
    25                 <input
    26                     type="text"
    27                     defaultValue="不可控组件"
    28                     ref="userInput2"
    29                 />
    30                 <button>提交</button>
    31             </form>
    32         )
    33     }
    34 }
    35  
    36 // 可控组建,不需要对DOM进行操作
    37 class Controll extends React.Component {
    38     state = { value:'可控组件' }
    39     submitData = (e)=> {
    40         alert(this.state.value);
    41         e.preventDefault();
    42     }
    43     handleChange = (e)=>{
    44         this.setState({
    45             value:e.target.value
    46         })
    47     }
    48     render() {
    49         return (
    50             <form onSubmit={this.submitData}>
    51                 <input
    52                     type="text"
    53                     defaultValue={this.state.value}
    54                     onChange={this.handleChange}
    55                 />
    56                 <button>提交</button>
    57             </form>
    58         );
    59     }
    60 }
    61  
    62 export default Controll;
  • 相关阅读:
    IOS上传图片方向问题
    在线抠图的小工具
    Notion笔记工具免费开通教育许可
    多国正在遭遇新型勒索病毒Petya侵袭
    UC 网盘:我又回来了
    数字统计
    Hello,World!
    Unity开发笔记-Timeline利用Clip实现Rewind回放
    Unity开发笔记-Timeline利用Single实现Rewind回放
    Unity开发笔记-PSD自动导出UGUI工具开发要点记录(1)PSD树形结构解析
  • 原文地址:https://www.cnblogs.com/yinhao-jack/p/10737557.html
Copyright © 2020-2023  润新知