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 的单向数据流模型,便于状态管理和数据流控制。但在一些特定情况下,非受控组件也可以提供更简洁的解决方案。

相关推荐
GISer_Jing11 分钟前
Next.js数据获取演进史
java·开发语言·javascript
1024小神32 分钟前
uniapp+vue3+vite+ts+xr-frame实现ar+vr渲染踩坑记
前端
测试界清流35 分钟前
基于pytest的接口测试
前端·servlet
知识分享小能手1 小时前
微信小程序入门学习教程,从入门到精通,自定义组件与第三方 UI 组件库(以 Vant Weapp 为例) (16)
前端·学习·ui·微信小程序·小程序·vue·编程
trsoliu1 小时前
多仓库 Workspace 协作机制完整方案
前端
啦工作呢1 小时前
数据可视化 ECharts
前端·信息可视化·echarts
NoneSL1 小时前
Uniapp UTS插件开发实战:引入第三方SDK
前端·uni-app
trsoliu2 小时前
Claude Code Templates
前端·人工智能
wangpq2 小时前
使用rerender-spa-plugin在构建时预渲染静态HTML文件优化SEO
前端·javascript·vue.js
KongHen2 小时前
完美解决请求跨域问题
前端