如何理解受控和非受控件组件?

简介: 如何理解受控和非受控件组件?

受控组件: 受控组件是React中的一种组件,其特点是输入框的值(value)由React状态(state)控制。也就是说,React中的状态变化会直接影响输入框的值。受控组件通过form的输入元素(input, select等)的value属性绑定到状态上,然后通过onChange事件来更新状态。也就是说,用户在输入框中的输入会触发onChange事件,然后更新React状态,进而重新渲染组件。

例如:

class Controlled extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      inputValue: '',
    };
  }
  handleInputChange = (event) => {
    this.setState({
      inputValue: event.target.value,
    });
  };
  render() {
    return (
      <input 
        type="text"
        value={this.state.inputValue}
        onChange={this.handleInputChange}
      />
    );
  }
}
  1. 非受控组件: 非受控组件与受控组件相反,输入框的值不由React状态控制,而是由用户输入的内容直接赋值。非受控组件只接受并响应来自用户的事件,例如onChange事件。它们不会影响输入元素的值。非受控组件主要用于处理一些不希望React状态改变的场景,例如一些只读或者只写的输入框。

例如:

class Uncontrolled extends React.Component {
  constructor(props) {
    super(props);
  }
  handleInputChange = (event) => {
    console.log(event.target.value);  // 输出用户输入的值
  };
  render() {
    return (
      <input 
        type="text"
        value={this.props.value}  // 由外部传入的值控制输入框的值
        onChange={this.handleInputChange}
      />
    );
  }
}

总结:受控和非受控是两种处理表单输入元素的方式,受控组件完全依赖于React的状态和事件系统,而非受控组件则更加自由,但也需要自行处理更多的事情。

相关文章
|
4月前
|
存储 JavaScript 前端开发
受控组件与非受控组件
【8月更文挑战第24天】
43 0
|
7月前
|
存储 前端开发 JavaScript
React的表单处理:受控组件与非受控组件深入解析
【4月更文挑战第25天】React表单处理涉及受控和非受控组件。受控组件通过状态管理表单数据,每次用户输入都触发状态更新,确保数据同步,适合实时交互但可能影响性能。非受控组件不直接管理状态,数据存储在DOM中,简化代码,适用于更新不频繁的场景,但在数据验证和同步上存在挑战。开发者应根据需求灵活选择。
|
7月前
|
JavaScript 前端开发
VUE里父组件与子组件的交互操作
VUE里父组件与子组件的交互操作
43 0
|
存储
说说对受控组件和非受控组件的理解,以及应用场景?
受控组件,简单来讲,就是受我们控制的组件,组件的状态全程响应外部数据
说说对受控组件和非受控组件的理解,以及应用场景?
|
7月前
|
缓存 前端开发 JavaScript
【亮剑】在React中如何通过点击事件控制组件显示与隐藏,包括基础概念和高级应用
【4月更文挑战第30天】本文介绍了在React中如何通过点击事件控制组件显示与隐藏,包括基础概念和高级应用。使用`useState`钩子和Context API可实现状态驱动的条件渲染,通过CSS类控制组件样式,或利用React Portals在DOM不同位置渲染。性能优化应注意避免不必要的渲染、合理使用Keys、优化事件处理器、使用Memoization及清理资源。测试和验证确保逻辑正确性,以构建动态用户界面并提升应用性能。
622 0
|
7月前
|
存储 前端开发 JavaScript
第十章 React中的非受控组件和受控组件
第十章 React中的非受控组件和受控组件
|
7月前
|
存储 前端开发 JavaScript
react受控组件与非受控组件
react受控组件与非受控组件
54 0
|
前端开发 JavaScript
react中受控组件与非受控组件
react中受控组件与非受控组件
58 0
|
存储 JavaScript 前端开发
对受控组件和非受控组件的理解,以及应用场景?
对受控组件和非受控组件的理解,以及应用场景?
98 0
|
前端开发 JavaScript
受控组件和非受控组件的区别
受控组件和非受控组件的区别