React使用 lodash-es 中的throttle方法失效
下面代码用了throttle方法,但是并没有实现1500内执行一次的效果,主要原因是useState的setValue()方法
该方法更新了state,导致了组件重新渲染,并且重新生成了函数,所以1500毫秒又被重置了
            
            
              javascript
              
              
            
          
          // ****** 错误 ******
const onAction = throttle(async () => {
  const params = {};
  const res = await API.loanSubmitSubmitApi(params);
  if (res.code === 200) {
    setValue('XXXX')
  }
}, 1500);
// ****** 正确 ******
// 这里为什么步用useCallback,具体原因没细究,我看到相关issue的回答就是改成useMemo.
// 如果需要用到load接口中的数据并且数据存在state中,这里的依赖项就应该是[loadData],不添加依赖项的话,会获取不到load的接口数据
const onAction = useMemo(
  () =>
    throttle(async () => {
      const params = {};
      const res = await API.xxxxxApi(params);
      if (res.code === 200) {
        setValue("XXXX");
      }
    }, 1500),
  []
);