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>
    )

}

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐