reactjs - React Material UI onFocusOut
问题描述
我目前使用
<TextField onChange={e => this.change(e, items)}
这会在我放入 TextField 的每个字母时触发,因此,我输入的文本会以慢动作填充。我在想,一旦用户键入所有内容并集中注意力,这个请求就会消失会更好。在这种情况下,我可以通过 React & Material UI TextField 使用什么样的事件?
解决方案
当附加任何 DOM 事件时,拥有函数的去抖动版本非常有用。它将对该函数的调用次数减少到最低限度,从而提高了性能。
所以,你可以这样做:
import _ from 'lodash';
constructor(props) {
super(props)
this.onChangeDebounce = _.debounce(e => this.change(e, items), 300);
}
render() {
...
onChange={e => this.onChangeDebounce(e)}
...
}
在这种情况下,我debounce
只传递两个参数:
- 被速率限制的函数
- 以毫秒为单位的速率限制,即在触发函数之前等待的时间。
或者您可以使用 onBlur 事件,该事件可用于任何 DOM 元素。每当输入失去焦点时,就会发生 onBlur 事件。换句话说:当您从输入中移除光标时,它会失去“焦点”,或者变得“模糊”。
需要注意的是它没有关联的事件,因此,要达到您想要的,您可以使用字段值更新状态,然后在 onBlur 上从状态中检索此值。
在这里,您有一个小提琴这样做。
推荐阅读
- cmd - 使用命令提示符将文件名附加到文件夹名称的一部分
- javascript - VueJS - 将单独的组件加载到 vue 实例中
- bash - 为什么xxd要加字符?
- opencv - 这段代码在使用 openCV 网络摄像头时显示错误
- css - CSS不适用于同一类型的所有元素?
- rstan - 关于 SBC 函数 rstan::sbc
- angular - Angular 8 和 ng2 图表 - 更新标签和数据
- regex - 如何使用python3中的re模块按不同组获取一些数字
- list - Flutter 中的 AnimatedList 显示破碎的元素
- javascript - 如何在链接单击而不是打开时下载图像