react受控组件与非受控组件

React中的组件可以分为受控组件和非受控组件:

受控组件:受控组件是指组件的值受到React组件状态的控制。通常在组件中,我们会通过state来存储组件的值,然后再将state的值传递给组件的props,从而实现组件的双向数据绑定。

例如,一个input输入框的value值就是一个受控组件,其值受到state的控制:

jsx 复制代码
class InputComponent extends React.Component {
  constructor(props) {
    super(props);
    this.state = { value: '' };
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(event) {
    this.setState({ value: event.target.value });
  }

  render() {
    return (
      <input type="text" value={this.state.value} onChange={this.handleChange} />
    );
  }
}

非受控组件:非受控组件是指组件的值不受React组件状态的控制,通常是在组件中获取DOM元素的值,然后进行操作。

例如,一个input输入框的defaultValue值就是一个非受控组件,其值由DOM元素控制:

jsx 复制代码
class InputComponent extends React.Component {
  constructor(props) {
    super(props);
    this.inputRef = React.createRef();
    this.handleClick = this.handleClick.bind(this);
  }
  
  handleClick(event) {
    console.log(this.inputRef.current.value);
  }

  render() {
    return (
      <div>
        <input type="text" defaultValue="default" ref={this.inputRef} />
        <button onClick={this.handleClick}>Get Input</button>
      </div>
    );
  }
}

总的来说,受控组件和非受控组件的选择取决于具体的业务需求和开发者的个人习惯。在大多数情况下,如果需要实现表单的双向数据绑定,就应该使用受控组件;而如果需要获取DOM元素的值,就应该使用非受控组件。

相关推荐
万少8 分钟前
万少的 Claude Code 入门教程
前端·人工智能·后端
水云桐程序员16 分钟前
学习 React Native(简称 RN)的路径
学习·react native·react.js
এ慕ོ冬℘゜18 分钟前
JS 前端基础高频面试题
开发语言·前端·javascript
放下华子我只抽RuiKe520 分钟前
React 从入门到生产(八):测试与部署
前端·javascript·深度学习·react.js·前端框架·ecmascript·集成学习
Dxy123931021624 分钟前
JS列表获取指定范围值的 N 种方法
开发语言·javascript·ecmascript
蜡笔小电芯28 分钟前
【Electron】第2章—BrowserWindow 与 Electron 窗口机制
前端·javascript·electron
zhangxingchao31 分钟前
AI 大模型面试核心二:微调、RAG、MCP、Agent 与工程落地
前端·人工智能·后端
ZC跨境爬虫32 分钟前
跟着 MDN 学CSS day_15:(掌握CSS背景与边框的创造性用法)
前端·css·ui·html·tensorflow
zhangxingchao33 分钟前
AI 大模型面试核心三: RAG、Agent 到 Prompt Engineering 的工程化理解
前端·人工智能·后端
Hilaku35 分钟前
从 15MB 减到 800KB,一行 ffmpeg 解决3D 渲染卡顿问题
前端·javascript·程序员