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在任何地方都不会干扰。
1条答案
按热度按时间hsvhsicv1#
setbolidata
不应该改变bolidata
的值(即使它是:是const
!).setbolidata
改变状态中的值。下一次组件呈现时,
useState
将从状态中提取新值并将其分配给bolidata
。但是,效果回调现在运行,而不是 * 下次组件呈现 * 时 * 运行。