react受控组件和非受控组件(此外也称约束组件)

React 中的受控组件和非受控组件是指表单元素(如 input、textarea、select 等)的两种不同管理方式。它们之间的主要区别在于状态的管理方式。

受控组件(Controlled Components)

1、受控组件通过 React 组件的状态(state)来管理表单元素的值。

2、当用户与表单元素交互时,触发事件(如 onChange),更新 React 组件的状态,进而更新表单元素的值。

3、通过 React 组件的状态来控制表单元素的值,从而实现数据的双向绑定。

javascript 复制代码
const [value, setValue] = useState('');

const handleChange = (event) => {
  setValue(event.target.value);
};

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

非受控组件(Uncontrolled Components)

1、非受控组件中,表单元素的值由 DOM 元素本身来管理,而不受 React 组件的状态控制。

2、通常通过 ref 来获取表单元素的值,而不需要通过 React 组件的状态来管理。

3、开发者需要手动处理表单元素的值,无法利用 React 的状态自动管理表单元素的值。

javascript 复制代码
const inputRef = useRef(null);

const handleClick = () => {
  const value = inputRef.current.value;
  // 处理表单元素的值
};

return (
  <input type="text" ref={inputRef} />
  <button onClick={handleClick}>Submit</button>
);

选择使用受控组件还是非受控组件取决于具体的需求和开发场景。通常情况下,推荐使用受控组件,因为它更符合 React 的单向数据流模型,便于状态管理和数据流控制。但在一些特定情况下,非受控组件也可以提供更简洁的解决方案。

相关推荐
东风破_13 分钟前
danci 项目(三):从 JSON 数据到 AI Coding,真实项目里的数据清洗、Prompt 和工程规范
前端·后端·node.js
东风破_33 分钟前
danci 项目(一):从需求到架构,一个单词学习系统为什么会这样设计
前端·后端·node.js
浮生望43 分钟前
React JWT 登录鉴权实战:Zustand 状态管理 + Axios 拦截器 + 路由守卫完整链路
react.js
蒲公英eric1 小时前
从客户端到服务端:DVWA DOM 型 XSS 模块完整漏洞分析教程
前端·web安全·ai·xss·dvwa·ai安全
单线程_011 小时前
从案例分析 Vue3 Tokenizer+Parser 源码三
前端·javascript·vue.js
顶点多余1 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
Setsuna_F_Seiei2 小时前
前端转型 Agent 开发 03 之 Agent Tools - 给 Agent 装上手脚
前端·agent·ai编程
jay神2 小时前
【计算机毕业设计】基于SpringBoot的程序教学辅助系统
java·前端·vue.js·spring boot·后端·毕业设计·课程设计
小磊哥er3 小时前
深入解构Claude Code - 第 8 篇 · 数据放哪、钱怎么算
javascript·ai编程
kyriewen5 小时前
我装了30多个Skill,给AI安排了8个岗位
前端·javascript·ai编程