react hooks默认是不支持useState的回调的,但有时候因为异步问题,不能及时获取到修改后的值,所以我们可以自定义回调函数

1.先自定义函数


  function useCallbackState(od) {
    const cbRef = useRef();
    const [data, setData] = useState(od);

    useEffect(() => {
      cbRef.current && cbRef.current(data);
    }, [data]);

    return [
      data,
      function (d, callback) {
        cbRef.current = callback;
        setData(d);
      }
    ];
  }

2.初始化时我们使用这个函数

const [activeTabName, setActiveTabName] = useCallbackState('');

3.使用时像setState的用法一样放在变量后边就可以了

setActiveTabName(current[0].title, (activeTabName) => {});
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐