首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在reactJS中文本框的div外部单击时,将编辑的文本框值更改为原始传递的值

在ReactJS中,要实现在文本框的div外部单击时将编辑的文本框值更改为原始传递的值,可以通过以下步骤实现:

  1. 首先,在React组件的state中定义一个变量来保存文本框的值和原始传递的值。例如,可以定义两个变量originalValueeditedValue,并将原始传递的值赋给originalValue
  2. 在文本框的div外部单击事件的处理函数中,将editedValue的值重置为originalValue
  3. 在文本框的onChange事件处理函数中,更新editedValue的值为用户输入的新值。
  4. 在渲染组件时,将editedValue绑定到文本框的value属性上,以便显示用户编辑的值。

下面是一个示例代码:

代码语言:txt
复制
import React, { useState } from 'react';

const TextBox = ({ initialValue }) => {
  const [originalValue, setOriginalValue] = useState(initialValue);
  const [editedValue, setEditedValue] = useState(initialValue);

  const handleOutsideClick = () => {
    setEditedValue(originalValue);
  };

  const handleChange = (event) => {
    setEditedValue(event.target.value);
  };

  return (
    <div onClick={handleOutsideClick}>
      <input type="text" value={editedValue} onChange={handleChange} />
    </div>
  );
};

export default TextBox;

在上述示例中,TextBox组件接收一个名为initialValue的prop,用于传递原始的文本框值。组件内部使用useState钩子来定义originalValueeditedValue的状态,并通过setOriginalValuesetEditedValue函数来更新它们的值。

handleOutsideClick函数中,当用户在文本框的div外部单击时,将editedValue的值重置为originalValue,实现将编辑的文本框值更改为原始传递的值。

handleChange函数中,当用户在文本框中输入新值时,更新editedValue的值为用户输入的新值。

最后,在渲染组件时,将editedValue绑定到文本框的value属性上,以便显示用户编辑的值。

这样,当用户在文本框的div外部单击时,文本框的值将被更改为原始传递的值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

React.Component损害了复用性?|TW洞见

第二行是一个文本框和一个“Add”按钮,可以把文本框内容添加为新标签。每次点击“Add”按钮,标签编辑器应该检查标签是否已经添加过,以免重复添加标签。...这些 本身并不是动态创建,但可以作为容器,放置其他动态创建元素。 代码函数来会把网页内容动态更新到这些 。所以,如果要在同一个页面显示两个标签编辑器,id 就会冲突。...使用ReactJS前端项目充满了各种 xxxHandler用来组件传递信息。 我参与某海外客户项目,平均每个组件大约需要传入五个回调函数。...Vars 是支持数据绑定列表容器,每当容器数据发生改变,UI就会自动改变。所以,x按钮onclick事件删除tags数据,页面上标签就会自动随之消失。...同样,Add按钮onclick向tags添加数据,页面上也会自动产生对应标签。 Binding.scala不但实现标签编辑器比ReactJS简单,而且用起来也比ReactJS简单: ?

4.9K90

Excel编程周末速成班第21课:一个用户窗体示例

1.文本框控件添加到窗体,然后将其Name属性更改为txtFirstName。 2.文本框旁边添加一个标签控件,并将其Caption属性更改为“名字:”。...为了简洁起见,本示例代码仅某些州加载到控件;当然,真正应用程序需要在复合框包含所有州。 要添加代码: 1.单击工程窗口中“查看代码”按钮以打开用户窗体代码编辑窗口。...如你第20课中所学习,此事件接收一个参数,该参数标识所按下键。如果该键可以接受,则将其传递;否则取消。 VBA联机帮助KeyCode列表,你可以看到键0到9代码为48到57。...当然,单击“下一步”按钮,这是必需单击“取消”或“完成”按钮,这也是必需。即使使用Hide方法隐藏了该窗体,它在下次显示仍将所有数据保留在其控件。因此,需要清除控件。...编辑打开用户窗体按F5来测试工程,还可以编写一个使用Show方法显示窗体宏。

6K10

26个你需要学习Firefox配置技巧,改进体验和加快浏览器响应速度

复选框单击OK,然后选择“false”,再单击OK。 此首选项现在存在于您列表,您可以在任何时候通过右键单击它并单击“Reset”来禁用它。 6....可以更改: false——光标放在插入点 True -单击选择所有文本 18....默认情况下,Firefox从支持离线web应用程序缓存500MB数据。您可以将该值更改为您喜欢任何。...您喜欢编辑查看源代码 ​这对于经常使用“查看源代码”函数开发人员非常有用。这个调整允许您在外部编辑查看给定网站源代码。 ​...增加“保存链接为”超时值 ​当您右击并选择“Save Link As…”,浏览器将从URL请求内容配置头以确定文件名。如果URL一秒钟内没有传递报头,Firefox发出一个超时值。

3.8K20

MFC入门教程(深入浅出MFC)

如果我们程序运行界面输入被加数,则通过CAdditionDoDataExchange()函数可以输入保存到m_editSummand变量,反之如果程序运行修改了变量m_editSummand...,则通过CAdditionDoDataExchange()函数也可以变量值显示到被加数编辑。...最后调用UpdateData(FALSE)根据被加数、加数、和值更新三个编辑显示,就得到了上图中结果。 到此,一个具有简单加法运算功能加法计算器应用程序就基本完成了。...例如,此例我们可以依次单击被加数编辑框、“被加数”静态文本框、加数编辑框、“加数”静态文本框、和编辑框、“和”静态文本框、“计算”按钮和“退出”按钮。...另外,我们可以属性页对话框标题设为“使用说明”,构造属性表对象将此字符串作为构造函数参数传入。

4K30

Web 性能优化: 使用 React.memo() 提高 React 组件性能

浏览器运行我们程序,并多次单击 Click Me 按钮,会看到控制打印很多次信息: 我们控制台中有 “componentWillUpdate” 和 “componentWillUpdate”...DevTools 选项卡操作 TestC 组件状态,单击 React 选项,选择右侧 TestC,我们看到带有计数状态: 在这里,我们可以改变数值,点击count文本,输入 2,然后回车:...如果我们更改数字并按回车,组件 props 改为我们文本框输入,接着继续更为 45: 移动到 Console 选项 我们看到 TestC 组件重新渲染,因为上个为 5,当前为 45.现在...,返回 React 选项并将值更改为 45,然后移至 Console: 看到组件重新渲染,且上个与当前是一样。...现在,如果我们右边编辑 count 为到 89,会看到我们应用程序重新渲染: 如果我们改为与上个一样: 89: 不会有重新渲染!!

5.6K41

eeglab教程系列(2)-加载、显示数据

square" 事件对应是显显示器绿色正方形外观,"rt"对应于受试者反映时间。...为了减少下载时间,这个“伪连续”脑电数据集实际上是通过连接80个独立3秒数据段来构建。因此某些数据通道可能会存在一些突然跳变。)...绘图窗口右侧是垂直刻度(及其单位,微伏),它指示垂直刻度条"幅度"。在这种情况下,该为80(微伏)。右下角编辑也显示了相同,如下所示,我们可以在其中进行更改。...2.5:电压刻度调整 通过重复单击"-"按钮或通过键盘编辑文本"刻度"编辑文本框值更改为大约50,然后按Enter键更新滚动窗口。...Settings > Time range to display,出现如下界面: 点击OK,数据显示如下: 2.7 通道数编辑 eegplot()界面,Settings > Number of

1.1K30

Excel实战技巧63: 制作具有数据导航功能用户窗体

这个用户窗体需要6个事件:Initialize(当用户窗体打开)、QueryClose(当用户窗体关闭),以及每个命令按钮单击事件。...需要使用事件代码记录集的当前记录显示文本框、以及阻止用户错误操作,例如当处于第一条记录单击命令按钮cmdPrev(获取外部数据),然后读取Connection和CommandText属性。接着,做一些修改,例如从连接字符串移除ODBC以及使用变量代替数据库信息。...也可以像上面程序中一样,代码分成几个字符串。 当关闭用户窗体触发QueryClose事件。如果用户窗体不打开,就不需要记录集,因此该事件要将其释放并清空内存。

3K20

Web APIs第二天

事件是在编程系统内发生动作或者发生事情, 比如用户在网页上单击一个按钮 事件是在编程系统内发生动作或者发生事情, 比如点击按钮 click 2. 什么是事件监听?...全选文本框案例 ①全选复选框点击,可以得到当前按钮 checked ②把下面所有的小复选框状态checked,改为和全选复选框一致 ③如果当前处于选中状态,则把文字改为取消, 否则反之 //需求:用户点击全选...三个ck按钮伪数组里 用for遍历 依次给 for (let num3 = 0; num3 < num2.length; num3++) { // num2[num3].checked...高阶函数 高阶函数可以被简单理解为函数高级应用,JavaScript 函数可以被当成【】来对待,基于这个特性实现函数高 级应用 【】就是 JavaScript 数据,如数值、字符串、布尔、...回调函数 如果函数 A 做为参数传递给函数 B ,我们称函数 A 为回调函数 简单理解: 当一个函数当做参数来传递给另外一个函数时候,这个函数就是回调函数 点击

1.1K60

eeglab教程系列(1)-加载、显示数据

1.准备工作: 1.1 安装eeglab: matlab安装eeglab,请看安装教程:eeglabMATLAB安装教程 1.2 测试数据 由于公众号上不好上传文件,所以请到QQ群中下载 测试数据文件...因此某些数据通道可能会存在一些突然跳变。) 选择Plot > Channel data (scroll). ? 绘图窗口右侧是垂直刻度(及其单位,微伏),它指示垂直刻度条"幅度"。...在这种情况下,该为80(微伏)。右下角编辑也显示了相同,如下所示,我们可以在其中进行更改。...2.5:电压刻度调整 通过重复单击"-"按钮或通过键盘编辑文本"刻度"编辑文本框值更改为大约50,然后按Enter键更新滚动窗口。 ?...2.7 通道数编辑 eegplot()界面,Settings > Number of channels to display,出现如下界面: ? 点击OK,数据显示如下: ?

1.1K21

eeglab中文教程系列(1)-加载、显示数据

square" 事件对应是显显示器绿色正方形外观,"rt"对应于受试者反映时间。...因此某些数据通道可能会存在一些突然跳变。) 选择Plot > Channel data (scroll). [图7] 绘图窗口右侧是垂直刻度(及其单位,微伏),它指示垂直刻度条"幅度"。...在这种情况下,该为80(微伏)。右下角编辑也显示了相同,如下所示,我们可以在其中进行更改。...电压刻度调整 通过重复单击"-"按钮或通过键盘编辑文本"刻度"编辑文本框值更改为大约50,然后按Enter键更新滚动窗口: [图8] 调整滚动时间窗口宽度 在上述图片中即eegplot()。...Settings > Time range to display,出现如下界面: [图9] 点击OK,数据显示如下: [图10] 通道数编辑 eegplot()界面,Settings > Number

1.7K00

架设邮件服务器-windows 2003 POP3服务,SMTP服务收发邮件「建议收藏」

默认选择是“匿名访问”,只有SMTP服务器是专用服务器(只与内部或者自己系统内其他SMTP服务器通信)并且不与外部Internet邮件系统通讯,才选择其他选项。...在此可以NDR副本发送到一个特定SMTP信箱。如果需要启用此功能,请在“传递报告副本发送到”文本框中键入接收报告副本电子邮件地址。...(5)延迟通知,若要允许本地和远程传递具有网络延迟,可以设置一个延迟时间段,在此时间段后才会发送传递通知。对于“出站”和“本地”传递,最小为1分钟,默认为12小,最大为9999天。...不要修改此。 5 高级设置 图6-19单击“高级”按钮,出现“高级传递”对话框,如图6-22所示。在这里可设置SMTP虚拟服务器上路由选项。...类似图6-51右侧窗格中用鼠标右键单击,从弹出快捷菜单中选择“新建邮件交换器(MX)”,弹出“邮件交换器”对话框“主机或子域”文本框,不要键入任何“邮件服务器完全合格域名

6.1K21

dropDownList属性

不过,和DropDownList控件相比,还缺少以下内容 1、当点击菜单某一项,菜单文字自动显示文本框 2、当点击菜单某一项,提供一个函数来获得相关数据(可以是菜单文字,也可以是相关文本...) 3、文本框不能编辑,只能通过点击菜单来更改内容 4、能设置下拉菜单最大高度,使得菜单项过多时,能出现滚动条。...先规划好这个JQuery组件属性: InputName:文本框name和id属性,默认是“Q”; ButtonText:右侧按钮文字,默认是“示例”; ReadOnly:文本框编辑性属性。...默认是-1,不设置最高高度,菜单高度由菜单条目决定; onSelect:设置选择菜单条目时调用函数。默认是$.noop(),JQuery空函数; Items:菜单条目的集合。...,使得文本框不能编辑

2.2K100

4.vue 双向绑定原理是什么?_监听门事件

双向绑定在不同表单元素原理 ---- 双向绑定 前面的指令和 { { }} 都是单向绑定,当用户主动文本框输入内容后,如果使用 :value=”str” 方式绑定,用户输入内容是无法自动回到程序变量中保存...双向绑定原理(高频笔试面试) 双向绑定就是单向绑定基础上,自动为元素添加 onchange 或 oninput 事件处理函数,并能在事件处理函数,自动值更新到 data 变量。...双向绑定在不同表单元素原理 (1)文本框 和文本域 首次加载,v-model 程序变量值更新到页面上文本框显示...,当用户主动文本框输入内容,v-model 自动将用户输入内容更新回程序变量中保存。...否则如果 radio 固定 value 与变量值不相等,则 radio 不选中;当用户切换选中项,v-mode 只会自动选中一个 radio 身上固定 value 值更新到程序变量里保存,如果未选中

1.4K70

vue todolist案例_nodejs mvc

(items )没有数据, #main 和#footer 标识标签应该被隐藏 4.2 最上面的文本框添加新任务。...按Enter键添加任务列表,并清空文本框。 当加载页面后文本框自动获得焦点, input 上使用 autofocus 属性可获得。 4.3 左下角要显示未完成任务数量。...单击Clear completed按钮后,确保复选框清除了选中状态 当列表没有已完成任务,应该隐藏Clear completed按钮。...4.6 双击(某个任务项)进入编辑状态(上通过.editing进行切换状态)。 进入编辑状态后输入框显示原内容,并获取编辑焦点。...4.8 所有任务项数据持久化到localStorage,它主要是用于本地存储数据。 完整代码展示 index.html: <!

1.3K10

Reactjs+BootStrap开发自制编程语言Monkey编译器:词法解析1

当一个组件被放入到””,这两个尖括号reactjs解析到后就会自动把尖括号里面的组件对象得到,然后调用它reander函数。...例如上面代码,夹在尖括号组件叫bootstrap.FormControl, 那么reactjs解析到上面代码,会自动调用bootstrap.FormControl.render(),于是一个输入文本框就会显示到页面上了...上面的代码经过reactjs解析后会在页面上绘制出底部那个红色按钮,其中bsStyle=”danger” 称之为组件属性,是用来从信息从外部传入组件内部,后面我们会详细讲解这个特性。...上面代码完成后,加载页面,文本框输入几句代码,点击按钮进行词法解析,结果如下: ?..., 第二行数字6,它对应Token,分类为4,对应到代码是NUMBER,并且它所在行号是1,从这两处结果看,词法解析结果基本正确。

2.5K10

一看就懂ReactJs入门教程(精华版)

1、ReactJS背景和原理 Web开发,我们总需要将变化数据实时反应到UI上,这时就需要对DOM进行操作。...下面我们来编写一个小例子,一个文本框和一个button,通过点击button可以改变文本框编辑状态,禁止编辑和允许编辑。通过这个例子来理解ReactJS状态机制。...这里我们可以通过this.state.属性名来访问属性,这里我们enable这个跟inputdisabled绑定,当要修改这个属性,要使用setState方法。...2、可以通过属性,传递到组件内部,同理也可以通过属性内部结果传递到父级组件(留给大家研究);要对某些变化做DOM操作,要把这些放到state。...3、为组件添加外部css样式,类名应该写成className而不是class;添加内部样式,应该是style={{opacity: this.state.opacity}}而不是style="opacity

6.2K70

开始学习React js

1、ReactJS背景和原理 Web开发,我们总需要将变化数据实时反应到UI上,这时就需要对DOM进行操作。...下面我们来编写一个小例子,一个文本框和一个button,通过点击button可以改变文本框编辑状态,禁止编辑和允许编辑。通过这个例子来理解ReactJS状态机制。先看代码: ?...这里我们可以通过this.state.属性名来访问属性,这里我们enable这个跟inputdisabled绑定,当要修改这个属性,要使用setState方法。...2、可以通过属性,传递到组件内部,同理也可以通过属性内部结果传递到父级组件(留给大家研究);要对某些变化做DOM操作,要把这些放到state。...3、为组件添加外部css样式,类名应该写成className而不是class;添加内部样式,应该是style={{opacity: this.state.opacity}}而不是style="opacity

7.2K60

(来啦,老弟)从零实现一个日历组件

,接下来我们开始编写日历内容了,日历组件包括一个文本输入框和一个日历面板,日历面板内容我们后面实现,这一步先写文本框样式及日历面板非内容部分,如: // 添加iconfont字体样式,主要用于文本框日历图标...const currentYear = someDayOfCurrentMonth.getFullYear() // 当前面板某一天修改为上一个月中某一天 someDayOfCurrentMonth.setFullYear...this.time.year, this.time.month, 1) const currentMonth = someDayOfCurrentMonth.getMonth() // 当前面板某一天修改为上一个月中某一天...this.time.year, this.time.month, 1) const currentYear = someDayOfCurrentMonth.getFullYear() // 当前面板某一天修改为上一个月中某一天...const currentMonth = someDayOfCurrentMonth.getMonth() // 当前面板某一天修改为上一个月中某一天 someDayOfCurrentMonth.setMonth

2.2K50
领券