您现在的位置是:亿华云 > IT科技类资讯
说说对React中受控组件和非受控组件的理解?应用场景?
亿华云2025-10-08 21:17:38【IT科技类资讯】4人已围观
简介本文转载自微信公众号「JS每日一题」,作者灰灰。转载本文请联系JS每日一题公众号。一、受控组件受控组件,简单来讲,就是受我们控制的组件,组件的状态全程响应外部数据举个简单的例子:classTestCo
本文转载自微信公众号「JS每日一题」,说说作者灰灰。中受转载本文请联系JS每日一题公众号。控组控组
一、和件受控组件
受控组件,非受简单来讲,理解就是应用受我们控制的组件,组件的场景状态全程响应外部数据
举个简单的例子:
class TestComponent extends React.Component { constructor (props) { super(props); this.state = { username: lindaidai }; } render () { return <input name="username" value={ this.state.username} /> } }这时候当我们在输入框输入内容的时候,会发现输入的说说内容并无法显示出来,也就是中受input标签是一个可读的状态
这是服务器托管因为value被this.state.username所控制住。当用户输入新的控组控组内容时,this.state.username并不会自动更新,和件这样的非受话input内的内容也就不会变了
如果想要解除被控制,可以为input标签设置onChange事件,理解输入的应用时候触发事件函数,在函数内部实现state的更新,从而导致input框的内容页发现改变
因此,受控组件我们一般需要初始状态和一个状态更新事件函数
二、非受控组件
非受控组件,简单来讲,就是b2b信息网不受我们控制的组件
一般情况是在初始化的时候接受外部数据,然后自己在内部存储其自身状态
当需要时,可以使用ref 查询 DOM并查找其当前值,如下:
import React, { Component } from react; export class UnControll extends 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="lindaidai" ref={ this.inputRef} /> <input type="submit" value="提交" /> </form> ) } }关于refs的详情使用可以参考之前文章
三、应用场景
大部分时候推荐使用受控组件来实现表单,因为在受控组件中,表单数据由React组件负责处理
如果选择非受控组件的话,控制能力较弱,表单数据就由DOM本身处理,但更加方便快捷,代码量少
针对两者的区别,站群服务器其应用场景如下图所示:
参考文献
http://meloguo.com/2018/10/08/受控与非受控组件/ https://zhuanlan.zhihu.com/p/37579677很赞哦!(79)
相关文章
- 众所周知,com域名拥有最大的流通市场和流通历史。最好选择com域名,特别是在购买域名时处理域名。其次可以是cn域名、net域名、org域名等主流域名,现在比较流行的王域名和顶级域名,都是值得注册和投资的。
- 使用位字段和掩码写一个国际象棋游戏
- isEmpty 和 isBlank 的用法区别,至少一半的人答不上来...
- 用 Antlr 重构脚本解释器
- 公司名字不但要与其经营理念、活动识别相统一,还要能反映公司理念,服务宗旨、商品形象,从而才能使人看到或听到公司的名称就能产生愉快的联想,对商店产生好感。这样有助于公司树立良好的形象。
- Replication(下):事务,一致性与共识
- Umd 的包如何导出 TS 类型
- 一文读懂TypeScript类型兼容性
- 100 条未读消息 怎么实现的?七 种技术方案安排