在 React 中自动缩放输入值的宽度

2023-12-26

我想要一个宽度适应其内容的输入。

我正在尝试实施这个类似问题的答案 https://stackoverflow.com/a/38867270/5308892,但是使用 React:

import React, { useState } from 'react';

export default () => {
  const [content, setContent] = useState('');
  const [width, setWidth] = useState(0);

  const changeHandler = evt => {
    setContent(evt.target.value);
  };

  return (
    <wrapper>
      <span id="hide">{content}</span>
      <input type="text" autoFocus style={{ width }} onChange={changeHandler} />
    </wrapper>
  );
};

问题是我不知道如何查询跨度的宽度,以便更改输入的宽度(使用setWidth).

我怎样才能实现这个目标?


经过一番折腾,我找到了解决方案!

import React, { useState, useRef, useEffect } from 'react';

export default () => {
  const [content, setContent] = useState('');
  const [width, setWidth] = useState(0);
  const span = useRef();

  useEffect(() => {
    setWidth(span.current.offsetWidth);
  }, [content]);

  const changeHandler = evt => {
    setContent(evt.target.value);
  };

  return (
    <wrapper>
      <span id="hide" ref={span}>{content}</span>
      <input type="text" style={{ width }} autoFocus onChange={changeHandler} />
    </wrapper>
  );
};

获取参考#hide我雇用的跨度useRef。然后,width状态变量可以通过内部定义的函数进行更新useEffect,每次都会被调用content变化。

我还必须切换display: none在CSS中#hide for position: absolute and opacity: 0,否则targetRef.current.offsetWidth总是评估为 0。

Here's 一个工作演示 https://jsfiddle.net/cabralpinto/h32wob50/1/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 React 中自动缩放输入值的宽度 的相关文章

  • 仅当表单已提交时才触发 jQuery 表单验证?

    不引人注目的验证基于这样的想法 don t进行表单验证 直到用户提交表单 一旦发生这种情况 如果表单上的某些内容无效 那么一旦用户更改了每个字段 就会立即验证它 我想做的是 不显眼地 触发表单元素的验证 也就是说 only如果用户已尝试提交
  • HTML/VBA Click 事件未触发

    这是我第一次在 StackOverflow 上发布问题 到目前为止 我已经能够通过 VBA 帮助论坛解决我的大部分问题 我的问题很简单 我有一个自动数据拉取 我需要在其中导出数据 我过去曾在这方面取得过成功 但这次略有不同 我尝试单击以生成
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • 用隐藏单元格补充 colspanned 表格有什么不好吗?

    我一直在表格上开发一些排序和选择功能 我发现在具有跨单元格的表格中定位非常困难 我只是添加了跨区单元格并将其隐藏 它看起来不错 它与我的 js 一起工作 非常适合索引 但我想知道这是否是合法的方法 stuffing display none
  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 使用 moment.js 检查输入日期是否为星期一

    好吧 我想检查日期是否是星期一 例如 var myDate new Date moment myDate DD MM YYYY dayIs monday 在我的国家 一周的第一天是星期一 所以 我真的想检查输入日期是否是一周的开始 我尝试使
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • 如何在React中的Material-UI选择框中设置默认值?

    我在用选择框 https material ui com demos selects 来自材料用户界面 我想显示默认选择的 选择值 选项 但之后用户无法选择此选项
  • 在为 RXJS 可观察量编写测试时,如何避免让调度程序通过我的业务逻辑?

    我发现使某些测试通过的唯一方法是显式地将调度程序传递给函数 为了便于说明 请考虑以下函数 function doStuff stream return stream delay 100 filter x gt x 2 0 map x gt
  • javascript中按tab键时如何调用函数?

    我有一个这样的功能 function whenEmpty field if field value field style backgroundColor ffcccc alert Please fill the field field f
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • 将数组排序为第一个最小值、第一个最大值、第二个最小值、第二个最大值等

    编写一个JS程序 返回一个数组 其中第一个元素是第一个最小值 第二个元素是第一个最大值 依此类推 该程序包含一个函数 该函数接受一个参数 一个数组 该函数根据要求返回数组 输入示例 array 2 4 7 1 3 8 9 预期输出 1 9
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • Jquery - 通过在字符串中构建 id 的 id 获取元素

    我在使用 jquery 元素时遇到问题 我正在 var 中构造名称 例如 var myId myGotId myId attr title changed myId 返回空 我想通过 id 获取我的元素 但动态构建我的 Id 连接字符串 编
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 在 React Native 中将 Props 传递到屏幕

    我已经开始学习 React Native 并且一如既往地从创建可重用组件开始 我了解了如何在创建自定义组件时传递和访问 props 我想在 React Native 中创建一个基本屏幕 它具有通用属性 并且我的应用程序中的所有屏幕都可以设置

随机推荐

  • Oracle关于集合和顺序的表表达式

    我正在分析一些现有的 PL SQL 代码 我可以看到 Oracle 集合在使用表表达式的查询中未嵌套的情况 没有 order 子句 并且代码显然假设项目将按存储在集合中的顺序返回 我知道如果没有 order by 则不能假设 select
  • 以编程方式访问 Google Chrome 主页或起始页

    Chrome 在哪里保存主页或起始页 URL 我想使用 C 以编程方式访问它 默认位置是 视窗XP 谷歌浏览器 C Documents and Settings
  • 如何在 ASP.NET MVC3 控制器中返回部分视图?

    我有一个控制器 其方法之一 操作 访问我的项目数据库 该方法检查项目类型 仅当从数据库检索的项目属于特定类型时 如何显示我的部分视图 控制器动作示例 public ActionResult CheckItem Koko model var
  • jquery 中是否有原型序列化()的等效项

    我正在尝试将表单的数据传递给jquery ajax请求 我找到了制作原型的简单方法 formid serialize 这将需要一个字符串 其中包含该表单中的所有元素名称及其值 以方便的方式为 ajax 请求做好准备 这很容易 那么jquer
  • Google Sheets 可安装 onEdit() 触发器无权添加日历事件

    我正在编写附加到 Google 电子表格的脚本 该脚本可以帮助我为员工生成轮班时间表 创建 Google 日历并在人们换班时更新日历 我在电子表格上附加了一个 onEdit 可安装触发器 用于检查用户是否更改了特定范围内的单元格 以交换班次
  • spring-boot:run 和 spring-boot:start 有什么区别

    有什么区别spring boot run and spring boot start 我看到它们都可用Maven 目标 但有什么区别呢 弹簧启动 运行 描述 运行可执行的存档应用程序 弹簧启动 启动 描述 启动一个 Spring 应用程序
  • Knockout获取属性值onClick函数

    具有 attr 值 Qref 的 HTML 视图 这是用于绑定的 HTML 代码 目前我已经硬编码了 Href 属性值
  • Android:文件名包含空格的 ffmpeg

    我想从 Android 应用程序执行 ffmpeg 如下所述 将 FFmpeg 与 Android NDK 结合使用 https stackoverflow com questions 9605757 using ffmpeg with a
  • 核心数据:在索引 x 处获取的对象有一个无序的节名称“xxxxxx”。对象必须按部分名称排序

    我知道我不是第一个问这个问题的人 但我真的很困惑 基本上我有一个带有两个按钮的屏幕 每个按钮根据日期将数据加载到下面的表格视图中 第一次加载第一个表格视图时 默认情况下选择左侧按钮 一切都显示正常 如果我单击右侧按钮并得到一个空白的表格视图
  • 如何从工具提示中删除方形标签并将其信息放在一行中?

    如何从工具提示中删除这个方块 如果我能设法只写一行这样的内容 我会更喜欢 二月 2 var data labels January February March datasets data 1 2 3 var myLineChart new
  • 使用 .save() 传递 url 参数来发布表单数据

    我发布的页面接受 id 电子邮件等参数 我该如何发送 index id 001 email protected cdn cgi l email protection 在backbone js中 model save 您可以将第二个参数中的任
  • 有没有更好的方法来比较字典值

    我目前正在使用以下函数来比较字典值并显示所有不匹配的值 有没有更快或更好的方法来做到这一点 match True for keys in dict1 if dict1 keys dict2 keys match False print ke
  • Tensorflow - h5模型到tflite转换错误

    我使用预训练的 InceptionV3 模型进行了学习迁移 并保存了 h5 模型文件 之后 我就能做出预测 现在 我想使用 TFLiteConverter convert 方法将 h5 模型转换为 tflite 文件 如下所示 conver
  • 无法在 R 上安装包

    当我尝试为 R 安装 Bioconductor 时遇到问题 我到处搜索解决方案 但没有任何东西真正适合我 请问 有什么建议吗 The downloaded binary packages are in var folders 74 y92t
  • 添加任务计划程序

    我正在开发 Apache Cordova 应用程序 我想知道是否可以将任务添加到调度程序设备 我必须在特定时间运行警报和通知 我该怎么做 我考虑过向调度程序设备添加一个任务并委派责任 这个有可能 至少安卓4 4 Thanks 首先 是的 你
  • 如何使用Rubberduck管理本地git存储库

    我在用着橡皮鸭 http rubberduckvba com 版本 2 0 13 与本地 git 存储库结合使用 用于对我的 VBA 项目进行版本控制 目前 每次我使用 Rubberduck 启动时 我都需要重新打开存储库Manage gt
  • SWIG 接口通过函数参数接收 Java 中的不透明结构引用

    我正在尝试使用 SWIG 来使用适用于 Android 的 Spotify API libspotify https developer spotify com technologies libspotify https developer
  • 标记水平 EMA 线(变量)

    这是我使用 atm 的代码 感谢比约恩 米斯蒂安 len1 input 10 minval 1 title Length len2 input 21 minval 1 title Length len3 input 55 minval 1
  • 创建父子数组 PHP

    我有一个平面数组 我试图将其转换为父子数组 Array 0 gt Array parent id gt t3 42yrg7 id gt t1 cze7b2e 1 gt Array parent id gt t3 42yrg7 id gt t
  • 在 React 中自动缩放输入值的宽度

    我想要一个宽度适应其内容的输入 我正在尝试实施这个类似问题的答案 https stackoverflow com a 38867270 5308892 但是使用 React import React useState from react