美文网首页
React 类组件及函数组件结合Lodash debounce需

React 类组件及函数组件结合Lodash debounce需

作者: 四环霉素 | 来源:发表于2021-01-13 14:52 被阅读0次

在React组件中使用Lodash debounce函数,可能会出现防抖不生效的情况。
导致这个问题的主要原因:重新render导致debounce函数第一个参数是新生成的,而不是对同一个函数的引用
需要注意的就是debounce接收的第一个函数参数在不同的render周期内不是重新生成的,引用保持不变。

  • class组件
<Search style={{ marginBottom: 8 }} placeholder="Search" onChange={this.onChange} />

//class组件中通过绑定到this上来保证不同生命周期中handleChange的引用不变
onChange = e => {
   e.persist();
   if (!this.handleChangeDebounce) {
     this.handleChangeDebounce = debounce(this.handleChange, 500);
   }
   this.handleChangeDebounce(e);
 };

handleChange = e => {
 //具体的业务逻辑
}
  • function组件
<Input placeholder="请输入股数" onChange={debounceHandleChange} />
  
  //在函数组件中用useCallback来确保不同生命周期内函数引用不变
  const changeFun = useCallback(value => {
    console.log('vvv', value);
    //具体的业务逻辑
  }, []);
  
  const debounceFun = useCallback(
    debounce(changeFun, 500, {
      leading: false,
      trailing: true
    }),
    [changeFun]
  );

  const debounceHandleChange = useCallback(
    e => {
      if (e.target && e.target.value) {
        console.log('===', e.target.value);
        debounceFun(e.target.value);
      }
    },
    [debounceFun]
  );

相关文章

  • React 类组件及函数组件结合Lodash debounce需

    在React组件中使用Lodash debounce函数,可能会出现防抖不生效的情况。导致这个问题的主要原因:重新...

  • React基础

    React包含react元素和react组件 react元素 react组件 react组件分为函数组件和类组件 ...

  • React Hook

    简介 :原本函数组件和类组件同为react组件,但是由于函数组件为无状态组件,react hook 的引入,让函数...

  • 最新面试集合

    react 1,react类组件和函数组件区别 函数组件:function Welcome (props) {re...

  • React学习笔记_02

    React 组件和状态 react 组件 1,组件的两种创建方式1,函数组件2,类组件 1,函数组件:使用 JS ...

  • React - 类组件创建

    React创建组件有两种方式 函数式组件 类组件函数式组件已经学过,现在看下类组件怎么写。 函数式组件和类组件区别...

  • React Hooks 实现和由来以及解决的问题

    与React类组件相比,React函数式组件究竟有何不同? 一般的回答都是: 类组件比函数式组件多了更多的特性,比...

  • React_hooks

    React_hooks React16.8新增的特性,主要针对函数组件 一、函数组件和类组件的区别 函数组件的运行...

  • React Hooks

    前言 React中组件分为两大类:Class类式组件、函数式组件 React v16.8以前: Class类式组件...

  • React基础知识

    基本 React 中的组件分为函数组件和类组件区分的话,简单的组件我们就用函数,如果复杂就用 class;函数组件...

网友评论

      本文标题:React 类组件及函数组件结合Lodash debounce需

      本文链接:https://www.haomeiwen.com/subject/eniuaktx.html