zoukankan      html  css  js  c++  java
  • 什么是受控组件

    在HTML当中,像 <input> , <textarea> , 和 <select> 这类表单元素会维持自身状态,并根据用户输入进行更新。但在React中,可变的状态通常保存在组件的状态属性中,并且只能用 setState() 方法进行更新。

    非受控组件

    非受控组件,即组件的状态不受React控制的组件,例如下边这个

    import React, { Component } from 'react';
    import ReactDOM from 'react-dom';
    
    class Demo1 extends Component {
        render() {
            return (
                <input />
            )
        }
    }
    
    ReactDOM.render(<Demo1/>, document.getElementById('content'))

    在这个最简单的输入框组件里,我们并没有干涉input中的value展示,即用户输入的内容都会展示在上面。如果我们通过props给组件设置一个初始默认值,defaultValue属性是React内部实现的一个属性,目的类似于input的placeholder属性。

    受控组件

    同样的,受控组件就是组件的状态受React控制。上面提到过,既然通过设置input的value属性, 无法改变输入框值,那么我们把它和state结合在一起,再绑定onChange事件,实时更新value值就行了。

    class Demo1 extends Component {
        constructor(props) {
            super(props);
            this.state = {
                value: props.value
            }
        }
    
        handleChange(e) {
            this.setState({
                value: e.target.value
            })
        }
    
        render() {
            return (
                <input value={this.state.value} onChange={e => this.handleChange(e)}/>
            )
        }
    }
  • 相关阅读:
    各种平衡树板子
    字符串板子
    数学公式/定理/板子整理
    线性筛 板子整理
    set乱搞时需注意的坑点
    可持久化数据结构板子整理(可持久化 线段树/字典树/可并堆)
    洛谷p2483 模板k短路 可持久化可并堆
    p4929 DLX舞蹈链
    百度ai 图像增强与特效
    百度ai php请求获取access_token返回false
  • 原文地址:https://www.cnblogs.com/georgexu/p/14047267.html
Copyright © 2011-2022 走看看