无法通过useCallback传递setCount函数

时间:2019-03-16 20:22:41

标签: reactjs

我正在尝试使用useCallback将setCount函数传递给Button组件,但输入中没有任何变化。cod

   const Button = memo(({ value, useValue }) => {
  return (
    <Fragment>
      <input
        type={"text"}
        value={value}
        onChange={({ target }) => {
          useValue(target.value);
        }}
      />
    </Fragment>
  );
});
const App = () => {
  const [count, setCount] = useState(0);
  const SetCount = useCallback(() => setCount, []);

  return (
    <section className="counter">
      <h1>Счётчик: {count}</h1>
      <Button value={count} useValue={SetCount}>
        -
      </Button>
    </section>
  );
};

1 个答案:

答案 0 :(得分:0)

useCallback记住指定的回调。 () => setCount回调是无操作的,因为未调用setCount。这将与useMemo一起使用,因为它应该返回一个回调:

const SetCount = useMemo(() => setCount, []);

这里都不需要它们。 useState的setter函数是常量,应该作为回调传递。

应该是:

<Button value={count} useValue={setCount}>