• 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;
  • 相关阅读:
    资料描述Android依赖注入:Google Guice on Android
    样本图片关于训练样本的真值标定
    文件配置GlassFish下手动部署JSF程序
    C语言关于链表的各项操作总结单向链表
    模式实现设计模式Java实现(四)
    节点交换《算法导论》学习笔记 第6章 二叉堆
    算法堆排序堆排序
    项目组织高级项目管理师个人总结基础知识
    字体代码Unity3D中汉字显示不完整的解决方案
    网站关键词[置顶] 如何做才能做到避免网站优化过度
  • 原文地址:https://www.cnblogs.com/yinhao-jack/p/10737557.html
Copyright © 2020-2023  润新知