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

在react中说说对受控组件和非受控组件的理解?以及应用场景

在react中说说对受控组件和非受控组件的理解?以及应用场景

  • 回答思路:说说受控组件-->说说非受控组件-->应用场景
    • 受控组件:
    • 非受控组件
    • 应用场景

回答思路:说说受控组件–>说说非受控组件–>应用场景

受控组件:

简单来讲,就是受我们控制的组件,组件的状态全程响应外部数据
举例:

class TestComponent extends React.Component{constructor(props){super(props);this.state = {username:'Tom'};}render(){return <input name="username" value={this.state.username}></input>	}
}

这时候当我们在输入框输入内容时,会发现输入的内容无法显示出来,此时input标签是一个可读的状态,因为value被this.state.username所控制,当用户输入时,this.state.username不会自动更新,这样的话input的内容就不会发生变化了,想要解除被控制,可以为input标签设置onChange事件,触发的时候更新state,从而导致input框内容更新

非受控组件

简单来讲,就是不受我们控制的组件,一般情况是在初始化的时候接受外部数据,然后自己在内部存储自身状态,当需要时,可以使用ref查询DOM并查找当前值,如下:

import React,{Component} form 'react';
export class ExampleComp extedns Component{constructor (props){super(props);this.inputRef = React.createRef();}handleSubmit = (e) =>{console.log("获取input框的值为:",this.inputRef.current.value);e.preventDefault();}render(){return (<form onSubmit={e => this.handleSubmit(e)}><input defaultValue="Tom" ref={this.inputRef} /><input type="submit" value="提交" /></form>)}
}

应用场景

大多数推荐使用受控组件来实现表单,因为受控组件表单数据由React组件负责处理,非受控组件控制能力弱,表单数据由DOM本身处理,但更加方便快捷,代码量少

特征不受控组件受控组件
一次性取值,如提交时
提交时验证
即时现场验证×
有条件地禁用提交按钮×
强制输入格式×
一个数据的多个输入×
动态输入×
http://www.lryc.cn/news/285146.html

相关文章:

  • 【算法练习Day50】下一个更大元素II接雨水
  • 深耕文档型数据库12载,SequoiaDB再开源
  • json解析
  • 【AI】深度学习在编码中的应用(8)
  • 什么是VUE 创建第一个VUE实例
  • 进程间协同:从进程启动、同步与互斥到进程间通信
  • 【驱动】TI AM437x(内核调试-06):网卡(PHY和MAC)、七层OSI
  • Java基础面试题 Object
  • 5G_射频测试_接收机测量(五)
  • ESP32-HTTP_webServer库(Arduino)
  • 无法找到mfc100.dll的解决方法分享,如何快速修复mfc100.dll文件
  • [VulnHub靶机渗透]:billu_b0x 快速通关
  • Docker安装开源Blog(Typecho)
  • 【Qt-license】误操作qt下载导致只能安装商业版试用十天,无法安装社区版
  • 数据操作——缺失值处理
  • 【刷题笔记4】
  • cuda二进制文件中到底有些什么
  • 怎么从视频中提取动图?一个方法快速提取gif
  • String字符串的比较和hash函数减少哈希冲突
  • 【数据库原理】(38)数据仓库
  • C++17新特性(四)已有标准库的拓展和修改
  • 软件是什么?前端,后端,数据库
  • Vue3+ElementUI 多选框中复选框和名字点击方法效果分离
  • 设计模式篇章(4)——十一种行为型模式
  • Spring成长之路—Spring MVC
  • 架构篇05-复杂度来源:高可用
  • C#调用Newtonsoft.Json将bool序列化为int
  • 【Linux系统编程】环境变量详解
  • 智能合约介绍
  • Python自动化实战之接口请求的实现