微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在反应钩子上使用`setState`回调

如何解决如何在反应钩子上使用`setState`回调

您需要使用useEffect钩子来实现这一点。

const [counter, setCounter] = useState(0);

const doSomething = () => {
  setCounter(123);
}

useEffect(() => {
   console.log('Do something after counter has changed', counter);
}, [counter]);

如果您希望 *

import React, { useEffect, useRef } from 'react';

const [counter, setCounter] = useState(0);
const didMount = useRef(false);

const doSomething = () => {
  setCounter(123);
}

useEffect(() => {
  // Return early, if this is the first render:
  if ( !didMount.current ) {
    return didMount.current = true;
  }
  // Paste code to be executed on subsequent renders:
  console.log('Do something after counter has changed', counter);
}, [counter]);

解决方法

React 钩子useState用于设置组件状态。但是如何使用钩子来替换回调,如下面的代码:

setState(
  { name: "Michael" },() => console.log(this.state)
);

我想在状态更新后做点什么。

我知道我可以useEffect用来做额外的事情,但我必须检查状态先前的值,这需要一些代码。我正在寻找一个可以与useState钩子一起使用的简单解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。