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

React中的受控组件与非受控组件

受控组件与非受控组件

受控组件

组件(input, select)的状态与state的值绑定,组件的状态全程响应外部数据

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

这时候当我们在输入框输入内容的时候,会发现输入的内容并无法显示出来,也就是input标签是一个可读的状态

这是因为valuethis.state.username所控制住。当用户输入新的内容时,this.state.username并不会自动更新,这样的话input内的内容也就不会变了

如果想要解除被控制,可以为input标签设置onChange事件,输入的时候触发事件函数,在函数内部实现state的更新,从而导致input框的内容页发现改变

因此,受控组件我们一般需要初始状态和一个状态更新事件函数。

非受控组件

一般情况是在初始化的时候接受外部数据,然后自己在内部存储其自身状态

即组件的状态不受React控制的组件

当需要时,可以使用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>)}
}

我们一般只有在一次性取值时才推荐使用非受控组件,比如提交表单的所有数据,否则大多数情况下都推荐使用受控组件

http://www.lryc.cn/news/328404.html

相关文章:

  • uniapp实现u-datetime-picker时间选择器的默认日期定位,解决default-value不生效问题
  • react native 使用ScrollView实现下拉更新,上拉加载更多
  • vue2完结
  • 前端网页之间传递参数
  • 【常见面试题】Golang中,协程数最多可以开多少个?
  • RabbitMQ基础笔记
  • 大型项目管理神器:掌握yarn monorepo的安装和使用
  • 算法打卡day28|贪心算法篇02|Leetcode 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏 II
  • 2013年认证杯SPSSPRO杯数学建模A题(第一阶段)护岸框架全过程文档及程序
  • 【3】3道链表力扣题:删除链表中的节点、反转链表、判断一个链表是否有环
  • mongodb sharding分片模式的集群数据库,日志治理缺失导致写入数据库报错MongoWriteConcernException的问题总结(上)
  • 苹果Mac OS系统上安装brew
  • 应用侧渲染流程
  • 学生党开放式运动耳机怎么选?五款超高销量高性价比品牌推荐
  • 服务器中有g++,但是查询不到,Command ‘g++‘ not found
  • count(“0“),split() ,sys.stdin.readline() ,matrix.append, input().strip()
  • Flink on Kubernetes (flink-operator) 部署Flink
  • 代码随想录算法训练营第三十二天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
  • 常见数据库分类介绍及其适用场景
  • 周末总结(2024/03/30)
  • (75)爬楼梯
  • ttkbootstrap界面美化系列之Notebook(四)
  • MySQL8存储过程整合springboot
  • Acwing 1238.日志统计 双指针
  • Matlab-R2022b-安装文件分享
  • Flutter开发之objectbox
  • AI Drug Discovery Design(学习路线)
  • 【软考】设计模式之状态模式
  • MNN介绍、安装与编译:移动端深度学习推理引擎
  • A Simple Problem with Integers(线段树)