为了账号安全,请及时绑定邮箱和手机立即绑定

ReactJS如何在刷新页面时保持State值

ReactJS如何在刷新页面时保持State值

不负相思意 2023-11-11 20:52:48
我试图在重新加载页面时不失去我的state价值。cart我可以在任何页面添加任何product内容cart,但每当我重新加载时,页面cart状态都会自行重置。无论是否使用更多库,是否有办法防止这种情况发生?我不知道这是否Redux是防止这种情况的唯一方法。我的App功能:function App() {  const [cart, setCart] = useState([]);  return (    <div>      <Router>        <NavbarComponent cart = {cart} setCart={setCart}></NavbarComponent>        <Switch>          <Route exact path="/">            <Home cart = {cart} setCart={setCart} />          </Route>          <Route exact path="/home">            <Home cart = {cart} setCart={setCart} />          </Route>          <Route exact path="/Products">            <Products cart = {cart} setCart={setCart} />          </Route>          <Route exact path="/Detail/:product_id">            <Detail cart = {cart} setCart={setCart} ></Detail>            </Route>        </Switch>      </Router>    </div>  );}下面这只是我可以更改cart状态值的组件之一。
查看完整描述

4 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

数据必须以某种方式持续存在 - 这意味着您必须将其实际保存在某个地方。


您可以在客户端上使用 localStorage。然后,请确保在购物车发生变化时更新它。


就像是:


  const [cart, setCart] = useState(localStorage.getItem('cart'));


  useEffect(()=>{

      localStorage.setItem('cart', cart)

  },[cart]);


查看完整回答
反对 回复 2023-11-11
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

如果您使用 Redux,请使用Redux-Persist,否则只需在组件挂载时从 localStorage 加载数据,并在组件卸载时将其保存到 localStorage



查看完整回答
反对 回复 2023-11-11
?
jeck猫

TA贡献1909条经验 获得超7个赞

您应该在代码中使用 localStorage。因为当你刷新页面时,你的状态是空的,但是本地存储存储了数据。


useEffect(() => {

    let newCartData = localStorage.getItem("Product")

    if (newCartData === []) {

        return []

    }

    else {

        return JSON.parse(newCartData)

    }


}, [])


const addToCart = (product) => {

    localStorage.setItem("Product", JSON.stringify(product))

}


查看完整回答
反对 回复 2023-11-11
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

当您刷新页面时,您将丢失当前状态,即它没有存储在其他地方,因此您必须首先将其存储在某个地方。要存储状态,您可以直接将其存储在 localStorage 中,也可以使用 redux-toolkit。在我看来,redux-toolkit 是最好的选择。

您需要安装 redux-toolkit,然后根据您的用途创建切片并存储,这样可以非常灵活地重用并在需要时清空状态。


查看完整回答
反对 回复 2023-11-11
  • 4 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信