react 输入框 input 防抖 debounce

12 篇文章 1 订阅
1 篇文章 0 订阅

react  input  debounce

1.需求

当我输入文本时候,对文本进行设置处理 (监控文本更新自动后请求接口)

希望实时的设置输入文字  不使用blur  但是change请求太过于频繁

主要是针对输入框防抖处理

2.处理

使用 lodash 的 debounce 

3.遇到的问题

浏览器报异常: Uncaught TypeError: Cannot read property 'value' of null

如果在react中想异步访问事件属性(如在setTimeout内),应该在是处理事件时调用event.persist(),这会从事件池中移除该合成函数并允许对该合成事件的引用被保留下来。

 

import { debounce } from 'lodash';


const debounceCom = React.Fc() => {
    
  const [text, setText] = useState('');


  // 设置文本
  function handleText(event: React.ChangeEvent<HTMLInputElement>) {
    event.persist();
    debounceSetText(event);
  }

  const debounceSetText = debounce((event: React.ChangeEvent<HTMLInputElement>) => {
    setText(event.target.value);
  }, 500);



    return(
     <Form>
         <Form.Item name="text" label="文本:">
              <Input placeholder="输入文本" onChange={handleText} />
         </Form.Item>
     </From>
    )

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Embrace924

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值