React 中 ref 如何使用?

这篇具有很好参考价值的文章主要介绍了React 中 ref 如何使用?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在React 中要使用 ref ,首先要创建一个新的对象

// 创建 ref 对象于jsx 绑定
  const inputRer = useRef(null);

在使用 ref 时不要在组件渲染时使用 ref 进行 dom 操作,因为此时ref 还没有值,会报错
(注意:操作文本框时尽量不要用 ref,推荐使用状态及受控组件来操作)

在 React 中,使用 ref 来直接操作 input 元素是可能的,但并不推荐这种做法,因为它违背了 React 的设计理念和优势。

React 的核心思想之一是将组件状态(state)作为数据源,根据状态的变化来触发页面的重新渲染。使用受控组件的方式,将表单元素的值绑定到组件状态上,可以很好地与 React 响应式的特性配合,实现组件的状态驱动。

而直接通过 ref 操作 input 元素,则绕过了 React 组件状态的控制,使得状态变化无法被跟踪和管理。这样做会影响到 React 组件的可维护性和可测试性,增加代码的复杂度,并且容易引入潜在的错误。

此外,使用受控组件的方式还可以方便地进行表单验证、处理用户输入等操作。通过在状态更新时执行相应的逻辑,可以实现更精细的交互和错误处理。

当确实需要直接操作 DOM 元素时,可以使用 ref 来获取元素的引用。但是需要注意,将 ref 用于非受控组件或其他用途时,应当谨慎权衡使用场景,并确保维护良好的代码结构和一致性。

综上所述,推荐使用受控组件的方式来处理表单元素,以利用 React 的优势和设计理念,提高代码的可维护性和可扩展性。

完整使用代码:文章来源地址https://www.toymoban.com/news/detail-608165.html

import { useRef } from "react";

const App = () => {
  // 创建 ref 对象于jsx 绑定
  const inputRer = useRef(null);

  /* 
  在使用 ref 时不要在组件渲染时使用 ref 进行 dom 操作,因为此时ref 还没有值,会报错
  (注意:操作文本框时尽量不要用 ref,推荐使用状态及受控组件来操作)
  */

  return (
    <div>
      <input type="text" ref={inputRer} />

      {/* 可以通过 ref 来操作input ,但是尽量不用,这样不符合 react 的设计理念和优势 */}
      <button onClick={() => console.log(inputRer.current.value)}>显示</button>
      {/* 必须要通过 .current 才能拿到 DOM 对象 */}
      <button onClick={() => inputRer.current.focus()}>获取焦点</button>
    </div>
  );
};

export default App;

到了这里,关于React 中 ref 如何使用?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React 中的 ref 如何操作 dom节点,使输入框获取焦点

    .focus() 获取焦点 当用户点击按钮时, handleClick 函数会被调用,从而将焦点聚焦到文本输入框上。 定义一个名为 handleClick 的函数。当按钮被点击时,这个函数会被调用。在函数内部,我们通过 inputRef.current 获取到 inputRef 引用所指向的 DOM 元素,并调用其 focus 方法,将焦点聚

    2024年02月09日
    浏览(43)
  • JavaScript 框架比较:Angular、React、Vue.js

    在 Web 开发领域,JavaScript 提供大量技术栈可供选择。其中最典型的三套组合,分别是 MERN、MEAN 和 MEVN。这些首字母相同的选项各自代表不同的技术加工具组合。为了在这些技术栈中做出明智选择,让我们先从核心组件聊起,再对各自前端框架(React、Angular 和 Vue)进行简化比

    2024年01月20日
    浏览(56)
  • 从javascript到vue再到react:前端开发框架的演变

    目录 JavaScript: 动态语言的基础 JavaScript:Web开发的起点 Vue.js: 渐进式框架的兴起 Vue.js:简洁、高效的前端框架 React.js: 声明式UI的革新 React.js:强大、灵活的前端框架 演变之路与未来展望 演变过程 当提到前端开发中的框架时,JavaScript、Vue.js和React.js是三个最常见的名词。它

    2024年02月07日
    浏览(51)
  • 简介:在这篇教程中,我们将使用React.js框架创建一个简单的聊天机器人的前端界面,并利用Dialogflo

    作者:禅与计算机程序设计艺术 介绍及动机 聊天机器人(Chatbot)一直是互联网领域中的热门话题。而很多聊天机器人的功能都依赖于人工智能(AI)技术。越来越多的企业希望拥有自己的聊天机器人系统,从而提升自己的竞争力。为此,业界也出现了很多基于开源技术或云

    2024年02月06日
    浏览(57)
  • JavaScript框架 Angular、React、Vue.js 的全栈解决方案比较

    在 Web 开发领域,JavaScript 提供大量技术栈可供选择。其中最典型的三套组合,分别是 MERN、MEAN 和 MEVN。前端框架(React、Angular 和 Vue)进行简化比较。 MERN 技术栈包含四大具体组件: MongoDB:一款强大的 NoSQL 数据库,以灵活的 JSON 格式存储数据。 Express.js:一套极简但强大的

    2024年02月03日
    浏览(54)
  • 2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较

    🎉欢迎来到Java学习路线专栏~探索2023年最佳JavaScript框架:React、Vue、Angular和Node.js的比较 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:Java学习路线 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 🍹文章作者技术和水

    2024年02月11日
    浏览(47)
  • React.js前端 + Spring Boot后端员工管理

    该项目是一个员工管理系统,前端使用 React.js 构建,后端使用 Spring Boot 和 Data JPA 和 Lombok 构建。它提供了有效管理员工信息的全面解决方案。 特征 响应式设计:响应式 UI 设计,确保跨各种设备的可用性。 数据验证:验证用户输入以确保数据完整性。 使用的技术 前端:R

    2024年04月28日
    浏览(47)
  • 前端js react vue怎么实现在线预览doc文档

    先说结论: 目前在纯前端层面没有很好的方案,基本都需要服务端的介入。 优点 :简单易用,无需配置 缺点 :文档需要支持外网访问,且文档会是公开可见的,所以对于一些内部敏感的文档来说,这个显然是不可行的。 需要后端介入配合 onlyoffice地址 这个也要先在服务器

    2024年02月15日
    浏览(80)
  • 前端框架之争:Vue.js vs. React.js vs. Angular

    🎉欢迎来到Web前端专栏~前端框架之争:Vue.js vs. React.js vs. Angular ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平有限,如果

    2024年02月07日
    浏览(91)
  • Node.js npm V8 React Express的运行配合关系:构建JavaScript应用的基石

    目录 Node.js 和 V8 引擎 Node.js 和 npm LTS(Long Term Support) React Node.js的作用 Express Node.js 和 V8 引擎 Node.js 使用 Google 的 V8 JavaScript 引擎 来执行 JavaScript 代码。V8 是一个高性能的 JavaScript 和 WebAssembly 引擎,用于在 Google Chrome 浏览器和 Node.js 中运行 JavaScript。 V8 引擎的更新 通常包括

    2024年03月12日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包