当前位置: 首页 > news >正文

18. React的受控和非受控组件

4. 受控和非受控组件

  • 4.1. 认识受控组件
      1. 在React中,HTML表单的处理方式和普通的DOM元素不太一样:表单元素通常会保存在一些内部的state。
      1. 比如下面的HTML表单元素:
      • 2.1. 这个处理方式是DOM默认处理HTML表单的行为,在用户点击提交时会提交到某个服务器中,并且刷新页面
      • 2.2. 在React中,并没有禁止这个行为,它依然是有效的
      • 2.3. 但是通常情况下会使用Javascript函数来方便的处理表单提交,同时还可以访问用户填写的表单数据
      • 2.4. 实现这种效果的标准方式是使用"受控组件"
        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 4.2. 受控组件基本演练
      1. 在HTML中,表单元素(如<input/> <textarea/> <select/>)之类的表单元素通常自己维护state, 并根据用户输入进行更新;
      1. 而在React中,可变状态(mutable state)通常保存在组件的state属性中,并且只能通过使用setState()来更新
      • 2.1. 将两种结合起来,使React的state成为"唯一数据源";
      • 2.2. 渲染表单的React组件还控制着用户输入过程中表单发生的操作
      • 2.3. 被React以这种方式控制取值的表单输入元素就叫做"受控组件";
      1. 由于在表单元素上设置了value属性,因此显示的值将始终为this.state.value,这使得React的state成为"唯一数据源";
      1. 由于handleUsernameChange()方法在每次按键时都会执行并更新React的state, 因此显示的值将随着用户输入而更新;
        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
  • 4.2. 受控组件的其他演练
      1. textarea标签
      • textarea标签和input比较相似
      1. select标签
      • select标签的使用也非常简单,只是它不需要通过selected属性来控制那一个被选中,它可以匹配state的value来选中。
      1. 处理多个输入
      • 3.1. 多处理方式可以像单处理方式那样进行操作,但是需要多个监听方法;
      • 3.2. 这里我们可以使用ES6的一个语法: 计算属性名(Computed property names)
  • 1.2. 非受控组件
      1. React推荐大多数情况下使用受控组件来处理表单数据:
      • 1.1. 一个受控组件中,表单数据是由React组件来管理的;
      • 1.2. 另一种替代方案是使用非受控组件,这是表单数据将交由DOM节点来处理;
      1. 如果使用非受控组件中的数据,那么我们需要是哟共ref来从DOM节点中获取表单数据。
      • 2.1. 我们来进行一个简单的演练;
      • 2.2. 使用ref来获取input元素;
      • 2.3. 示例代码如下:
        
        
      1. 在非受控组件中通常使用defaultValue累设置默认值;
      1. 同样,<input type="checkbox"><input type="radio">支持defaultChecked<select><textarea> 支持 defaultValue
http://www.dtcms.com/a/553014.html

相关文章:

  • cocos 在animation播放后调整widget右对齐能避免动画position影响对齐
  • RAG_混合检索
  • Pytorch 预训练网络加载与迁移学习基本介绍
  • 企业官网响应式网站作品网站
  • Ubuntu20.04操作系统搭建gitlab详细教程
  • MySQL:with窗口函数说明及使用案例
  • 【C++学习】对象特性--继承
  • 常州外贸网站浦东区建设工程监督网站
  • AI+产业革命:人工智能如何成为新质生产力的“第一加速器”
  • Linux应用开发-6-GPIO系统控制蜂鸣器
  • LeetCode 刷题【140. 单词拆分 II】
  • 网站开发 犯法网站漏洞扫描工具
  • 漏洞修复学习之CVE-2023-38545漏洞复现与修复
  • 逻辑回归特征重要性排序实验报告:不同特征选择方法的排序一致性验证
  • 深入解析MySQL(6)——存储过程、游标与触发器
  • Linux操作系统学习之---线程池
  • 做网站 免费字体wordpress的slider
  • “十五五”规划前瞻:短剧小程序系统开发的技术浪潮与开发新机遇
  • Rust开发之使用 Trait 定义通用行为——实现形状面积计算系统
  • 解决小程序滚动穿透问题
  • 《风格锚点+动态适配:Unity跨设备渲染的核心逻辑》
  • Unity与iOS原生交互开发入门篇 - 调用iOS的Alert
  • 旧物二手回收小程序:引领绿色消费,开启时尚生活新方式
  • LeetCode 3289.数字小镇中的捣蛋鬼:哈希表O(n)空间 / 位运算O(1)空间
  • Cargo深度解析:Rust的构建系统与包管理器
  • 站长之家官网php做的网站如何运行
  • Bayes/BO-CNN-LSTM、CNN-LSTM、LSTM三模型多变量回归预测Matlab
  • # AI时代的人机交互写作:从方法论框架搭建到实践探索
  • 【fixchart】【来学习基于Mermaid语法生成“流程图”】
  • 解决小程序样式隔离styleIsolation