【发布时间】:2021-03-06 11:37:40
【问题描述】:
当调用closehandler 函数但状态未更新时,我正在尝试更新侧边栏类。我该怎么做。
function RiderSidebar({ sidebar, close }) {
const [SidebarClass, setSidebarClass] = useState('sidebar')
const closeHandler = (e) => {
e.preventDefault();
console.log("closed click");
setSidebarClass("user-side-bar close")
console.log("slidebar is " + SidebarClass);
setTimeout(() => {
close()
}, 1000)
}
return (
<div className={SidebarClass} >
<button className="close-btn" onClick={closeHandler}>X</button>
<ul>
<li><NavLink to='/rider/dashboard' className="user-nav" ><DashboardIcon /> Dashboard</NavLink></li>
<li><NavLink to='/rider/orders' className="user-nav" ><HistoryIcon /> Orders</NavLink></li>
<li><NavLink to='/user/logout' className="user-nav" ><PowerSettingsNewIcon /> Logout</NavLink></li>
</ul>
</div >
)
}
【问题讨论】:
-
你的意思是
console.log没有更新? -
but the state is not updating- 请解释一下,你在哪里检查这个? -
@DiwakarSingh 当我单击关闭按钮时,如果我在 closeHandler 函数上使用 console.log 进行检查。但它会在控制台上显示侧边栏。
-
@nnam4x React 批量更新状态。如果您在更新状态响应后立即检查状态更新,那么您可能无法获得更新后的状态。您可以在 render 方法中检查更新的状态。请验证您是否在那里获得了更新的状态?
-
@DiwakarSingh 是的,它正在更新渲染。谢谢