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

React获取form表单值的N种方式

Ref模式(非受控模式)

非钩子模式
1.createRef()方式
js:
userNameEl=createRef()
<input type="text" name="userName" ref={this.userNameEl} />
获取值的方式:
this.userNameEl.current.value2.refs(废弃)
js:
const { userName } = this.refs;<input type="text" name="userName" ref="userName" />3.回调函数方式(不推荐)
js:
this.userNameRef.value
<input type="text" name="userName" ref={(el) => (this.userNameRef = el)} />
钩子函数模式
import React, { useRef, useEffect } from 'react';
function MyComponent() {const myRef = useRef();useEffect(() => {myRef.current.focus();}, []);return <input ref={myRef} />;
}

非ref模式(受控模式)

非钩子模式
import { Component } from "react";
export default class TestValue extends Component {state = {userName: null,};inputChange = (e) => {this.setState({ userName: e.target.value });};getInputValue = () => {console.log(this.state.userName);};render() {return (<div><input type="text" name="userName" onChange={this.inputChange} /><button onClick={this.getInputValue}>TestValue</button></div>);}
}
钩子模式
import { useState } from "react";
export default function TestValue() {//函数式组件使用const [userName, setUserName] = useState(null);function inputChange(e) {setUserName(e.target.value);}function getInputValue() {console.log(userName);}return (<div><input type="text" name="userName" onChange={inputChange} /><button onClick={getInputValue}>TestValue</button></div>);
}

总结

ref模式和非ref模式的区别

ref模式是在类组件或使用Hooks的函数组件中创建并使用ref的方式,可以用来访问和控制DOM节点或其他组件实例。非ref模式主要是指无状态组件,它们不支持ref。

受控组件和非受控组件的区别

React受控组件和非受控组件之间的最大区别是组件的值是由React状态控制还是由DOM节点控制。

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

相关文章:

  • Apache Knox 2.0.0使用
  • Tomcat 内核详解 - Web服务器机制
  • 几个人脸库对于面部动作识别的功能比较
  • IDEA 使用Alibaba Cloud Toolkit 实现远程 自动部署
  • 蓝桥杯备战15.完全二叉树的权值
  • 【前端】LayUI监听事件汇总
  • 【多电压流程 Multivoltage Flow】- 5.特定工具使用建议(1.VCS NLP VC LP)
  • Elasticsearch 实现word、pdf、txt、excel文档内容快速检索(保姆级教程)
  • [初学rust] 04_rust复合类型
  • 什么是Zoho CRM客户关系系统管理?
  • 青岛东软载波子公司东软载波微电子授权世强硬创代理,出货量累计超20亿颗
  • YOLO损失函数——SIoU和Focal Lossr损失函数解析
  • C++:编程世界的永恒之石
  • 线上3D博物馆搭建简单吗?有何优势?有哪些应用场景?
  • Rust 语言的“命名空间” —— mod
  • 加速科技突破2.7G高速数据接口测试技术
  • 从0开始搭建一个react项目 第一 二 三天
  • LSTM与GAN创新结合!模型性能起飞,准确率超98%
  • E2E测试学习
  • 基于死区补偿的永磁同步电动机矢量控制系统simulink仿真模型
  • GSCoolink GSV6125 替LT6711A HDMI2.0转Type-C/DP1.4
  • 【自然语言处理】【大模型】DeepSeek-V2论文解析
  • 前端面试题日常练-day10 【面试题】
  • conan2 基础入门(04)-指定编译器(gcc为例)
  • 谈谈std::map的lower_bound
  • 不知道代理IP怎么挑?一文带你了解挑选的关键点!
  • java 并发线程应用
  • Java面试八股文(SpringCloud篇)
  • PWRWER
  • 怎样恢复E盘里删了的文件夹,2024让EasyRecovery来帮你轻松恢复