相关疑难解决方法(0)

在React.js中执行去抖动

你如何在React.js中进行去抖动?

我想辩论handleOnChange.

我试过debounce(this.handleOnChange, 200)但它不起作用.

function debounce(fn, delay) {
  var timer = null;
  return function() {
    var context = this,
      args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function() {
      fn.apply(context, args);
    }, delay);
  };
}

var SearchBox = React.createClass({
  render: function() {
    return <input type="search" name="p" onChange={this.handleOnChange} />;
  },

  handleOnChange: function(event) {
    // make ajax call
  }
});
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

443
推荐指数
21
解决办法
20万
查看次数

使用useEffect React Hook时如何解决缺少依赖项警告?

使用React 16.8.6(在以前的版本16.8.3中很好),当我尝试防止在获取请求上发生无限循环时,出现此错误

./src/components/BusinessesList.js
Line 51:  React Hook useEffect has a missing dependency: 'fetchBusinesses'.
Either include it or remove the dependency array  react-hooks/exhaustive-deps
Run Code Online (Sandbox Code Playgroud)

我一直找不到停止无限循环的解决方案。我想远离使用useReducer()。我确实在https://github.com/facebook/react/issues/14920找到了这个讨论,在这里可能的解决方案是You can always // eslint-disable-next-line react-hooks/exhaustive-deps if you think you know what you're doing.我不确定自己在做什么,所以我还没有尝试实现它。

我有这个当前设置,React hook useEffect永远/无限循环连续运行,唯一的注释是useCallback()我不熟悉的。

我目前的使用方式useEffect()(类似于,我一开始只想运行一次componentDidMount()

useEffect(() => {
    fetchBusinesses();
  }, []);
Run Code Online (Sandbox Code Playgroud)
const fetchBusinesses = () => {
    return fetch("theURL", {method: "GET"}
    )
      .then(res => normalizeResponseErrors(res))
      .then(res => {
        return res.json();
      }) …
Run Code Online (Sandbox Code Playgroud)

reactjs eslint create-react-app react-hooks

58
推荐指数
12
解决办法
5万
查看次数

使用去抖 onChange 处理程序设置输入值

在我的 React Hooks 应用程序中,我需要让用户在输入字段中键入 1000 毫秒。当 1000 毫秒到期时,将发送带有输入值的 API 请求。

<input type='text' name='name' className='th-input-container__input' onChange={evt => testFunc2(evt.target.value)} />
Run Code Online (Sandbox Code Playgroud)

该值设置为testFunc2(evt.target.value)

const testFunc2 = useCallback(debounce((text) => setNameFilter(text), 1000), []);
Run Code Online (Sandbox Code Playgroud)

一旦nameFilter设置为新值,useEffect就会发出 API 请求,因为nameFilter它是依赖项。这样,仅使用最终的用户输入而不是每个击键值来查询 API,但输入仍不受控制。当我将当前nameFilter值添加到输入时,value={nameFilter}用户无法在输入中键入,并且输入仅接收最后键入的字符。

如何让用户输入的字符显示在输入中?

debouncing react-hooks

3
推荐指数
1
解决办法
3063
查看次数