仅在状态和任何相关效果完成更新后调用函数

时间:2021-04-29 19:55:21

标签: reactjs react-hooks

我有一个基本上执行以下操作的 buttonClick:

function func() {
      const [bool, setBool] = useState();
      const [data, setData] = useState({});
      
      useEffect(()=>{
        if(bool) {
          setData({bool: true})
        } else {
          setData({bool: false})          
        }
      }, [bool]);
     
      onClick=(evt)=>{
         setBool(true);
         sendToDb(data);
      }
}

我知道 useState 是异步的。有没有办法让我可以调用发送到数据库,直到设置数据的 useEffect 完成?

1 个答案:

答案 0 :(得分:0)

只需使用另一个 useEffect 来发送您的数据。

function func() {
      const [bool, setBool] = useState();
      const [data, setData] = useState({});
      
      useEffect(()=>{
        if(bool) {
          setData({bool: true})
        } else {
          setData({bool: false})          
        }
      }, [bool]);

      useEffect(()=>{
        sendToDb(data);
      }, [data]);
     
      onClick=(evt)=>{
         setBool(true);
      }
}