React——关于表单元素

news/2025/2/12 23:43:56/

关于React 处理表单元素,有两种方式:

  1. 受控组件【推荐】
  2. 非受控组件
受控组件-表单元素(状态可变,react的state控制)
  • HTML中表单元素是可输入的,即表单用户并维护着自己的可变状态(input 的 value)。
  • 可变状态保存在state中,只能通过setState进行修改。
  • React中将state中的数据与表单元素的value值绑定到了一起,由state的值来控制表单元素的值
  • 受控组件:value值受到了react控制的表单元素 (value的双向绑定,如onInput、onchange、value)
  • 相当于VUE的v-model语法糖:valuse=“message”, @input=“onInput”
class App extends React.Component {state = {inputValue: 'hello react'}handleChange = (e) => {this.setState({msg: e.target.value})}render() {return (<div><input type="text" value={this.state.inputValue} onChange={this.handleChange}/></div>)}
}
非受控组件-ref-表单元素(状态不可变,通过ref直接控制数据)

通过ref 的createRef()方法,控制DOM的方式来获取表单元素的值

  • 非受控组件是通过ref操作 DOM 的方式来控制
import { createRef } from 'react'class New extends Component {// 声明一个refnewRef = createRef()handleClick = () => {console.log(this.newRef.current.value)  // 控制dom的value}render() {// 赋值给当前domreturn (<div><input ref={this.newRef} /><button onClick={handleClick}>触发handleClick</button></div>)}
}

http://www.ppmy.cn/news/1388989.html

相关文章

链表取反、查找中间值、删除倒数第几个值、删除链表指定数据的结点、插入排序——数据结构——day02

建议和上一篇一起看 链表取反 void reverse_link(LINK_LIST *plist) {if (is_empty_link(plist)) //首先查看链表是否为空{return ;}LINK_NODE *pinsert NULL;LINK_NODE *ptmp plist->phead;plist->phead NULL;while (ptmp ! NULL){pinsert ptmp;ptmp ptmp->pn…

webpack5零基础入门-12搭建开发服务器

1.目的 每次写完代码都需要手动输入指令才能编译代码&#xff0c;太麻烦了&#xff0c;我们希望一切自动化 2.安装相关包 npm install --save-dev webpack-dev-server 3.添加配置 在webpack.config.js中添加devServer相关配置 /**开发服务器 */devServer: {host: localhos…

写了几个难一点的sql

写了几个难一点的sql SELECT bn.id AS book_node_id, t.version_id, bn.textbook_id, s.id AS subject_id, s.stage_id, COUNT( CASE WHEN d.document_type_id 1 AND d.scope IS NULL AND p.document_id IS NOT NULL THEN 1 END ) AS type_1_count, COUNT( CASEWHEN d.docume…

【重温设计模式】状态模式及其Java示例

状态模式的基本概念 在编程世界的大海中&#xff0c;各种设计模式就如同灯塔&#xff0c;为我们的代码编写指明方向。其中&#xff0c;状态模式是一种行为设计模式&#xff0c;它让你能在一个对象的内部状态改变时改变其行为&#xff0c;使得对象看起来就像改变了其类一样。这…

计算机网络——协议层次及服务模型

计算机网络中的协议层次是指将网络功能划分为不同的层次&#xff0c;每个层次负责特定的功能&#xff0c;并通过协议进行通信。 一、为什么要分层 分层是设计/讨论复杂系统的有效方法。分层使得复杂系统概念化&#xff0c;结构清晰便于标示网路组件&#xff0c;以及描述其相互…

使用uniapp,uni-data-select组件时,内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点,逼死强迫症

项目场景&#xff1a; 微信小程序开发&#xff0c;使用uniapp&#xff0c;uni-data-select组件时&#xff0c;内容长度没超过容器宽度时候虽然能显示全内容但是数据后边会出现三个点&#xff0c;逼死强迫症 解决方案&#xff1a; 找到组件的源代码&#xff0c;然后删除那三个…

【研发管理】产品经理-基础认知

导读&#xff1a;产品经理&#xff08;Product Manager&#xff09;是一个负责产品的全周期管理的职位&#xff0c;他们不仅参与产品的设计、开发、推广和销售&#xff0c;还涉及到产品的市场调研、用户需求分析、竞争分析、产品规划、产品测试以及后续的产品迭代等多个环节。产…

【linux】Debian访问Debian上的共享目录

要在Debian系统上访问共享目录&#xff0c;通常意味着要访问通过网络共享的文件夹&#xff0c;比如通过SMB/CIFS&#xff08;Server Message Block/Common Internet File System&#xff09;协议共享的Windows共享文件夹。以下是访问共享目录的步骤&#xff1a; 1. 安装必要的…