如何解决我无法立即获取更新的 internalStorage 值以在 Reactjs 中更新我的购物车通知
这是我的购物车图标,它是一个单独的购物车组件
<IconButton aria-label="cart">
<StyledBadge badgeContent={localStorage.getItem('count')}
color="primary">
<ShoppingCartIcon style={IconStyling.styleListShopIcon} />
</StyledBadge>
</IconButton>
这是我的代码,用于在发布新购物车项目时更新 localStorage
axios.post(`http://localhost:5000/cart`,CartData)
.then((result) => {
localStorage.setItem('count',result.data.length);
}).catch((error) => {
console.log(error)
})
解决方法
React 使用引用来检查是否有更改以触发更新。
通过使用 localStorage
,引用将始终相同,并且不会触发更新。
一种基本上保留你所拥有的一切的“hacky”方式是这样的:
向要渲染的组件添加一个状态和一个 forceRender
函数:
const [render,setRender] = React.useState(0)
function forceRender(){
setRender(render + 1)
}
然后将 forceRender
添加到您的 Axios 提取中:
axios.post(`http://localhost:5000/cart`,CartData)
.then((result) => {
localStorage.setItem('count',result.data.length);
forceRender();
}).catch((error) => {
console.log(error)
})
请注意,这实际上是您告诉 react 何时重新渲染,并且有更好的内置方法来执行此操作...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。