javascript - React 自定义钩子(Hook)无限循环

标签 javascript reactjs ecmascript-6

我尝试使用自定义 react Hook 创建一个方法,以便在许多组件中重用相同的状态逻辑,但我遇到了不变违规“防止无限循环”。

function useCounter(initial) {
  const [count, setCounter] = useState(initial);

  return {
    increase: setCounter(count + 1),
    decrease: setCounter(count - 1),
    count
  };
}

使用

import useCounter from "./useCounter";

function CompOne() {
  const { count, increase } = useCounter(0);

  return <div onClick={() => increase()}>Component {count}</div>;
}

演示 https://codesandbox.io/s/practical-hooks-440l1

最佳答案

尝试

  return {
    increase: () => setCounter(count + 1),
    decrease: () => setCounter(count - 1),
    ...
  };

关于javascript - React 自定义钩子(Hook)无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59150047/

相关文章:

javascript - 有条件地使用三元运算符应用类

javascript - 使用 React Markdown 编辑器时出错

javascript - react 选择标签不显示

javascript - 一般来说,reduce 比 filter + map 快吗?

javascript - 此语法是否通过右递归定义右结合性

javascript - 莫蒂键盘 : Change focus when input field equals maxlength

javascript - 设置不带参数的 Content-Type

javascript - 如何在模式关闭时将选择框设置为默认值?

javascript - 为什么从 Javascript 数组中删除不会改变它的长度?

javascript - 将函数插入数组,将 let 转换为 var