javascript 状态未在useEffect内部更新

plupiseo  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(101)
const [bolidata, setbolidata] = useState('');
 
  useEffect(() => {
    if (location?.state) {
     
      setbolidata(location?.state?.data);
      console.log('This is' ,bolidata ) 
      console.log('boli data is manual donation ', location?.state?.data);
    }
  }, []);
  
  console.log("outside", bolidata);
  
  const tabs = React.useMemo(
    () => [
      {
        label: ' Manual Cash Donation',
        component: (
          <CashDonation
            setshowalert={setshowalert}
            handleClose={handleClose}
            themeColor={donationColorTheme.cash}
            handleOpen4={handleOpen4}
            setopendashboard={setopendashboard}
            donationTypes={donationTypes}
            bolidatasss={bolidata}
          />
        ),
      }

在这段代码中,setbolidata没有更新useEffect内部的bolidata的状态,但在useEffect外部,boliData提供了所需的详细信息。在两个console.log中,bolidata都不提供数据,但带有location?.state?.data的日志提供数据。注意:这不是完整的代码,setbolidata和bolidata在任何地方都不会干扰。

hsvhsicv

hsvhsicv1#

setbolidata不应该改变bolidata的值(即使它是:是const!).
setbolidata改变状态中的值
下一次组件呈现时,useState将从状态中提取新值并将其分配给bolidata
但是,效果回调现在运行,而不是 * 下次组件呈现 * 时 * 运行。

相关问题