亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刷新時反應鉤子和上下文 api localstorage

刷新時反應鉤子和上下文 api localstorage

慕碼人2483693 2022-10-21 17:34:38
在我的 SPA 中,我使用了反應鉤子和上下文 API。我需要保持使用上下文 API 渲染的組件視圖的當前狀態,以便我可以通過應用程序實現全局組件條件渲染。我在一個儀表板頁面上有兩個視圖:概述和詳細信息。該按鈕觸發全局狀態更改,即使在頁面刷新時視圖也應固定在狀態值上。這是我的代碼片段:AppRoutes 文件import React, { useState } from "react";import { Router, Route, Switch } from "react-router-dom";import history from "../utils/history";import { PyramidProvider } from "../context/pyramidContext";import Dashboard from "../pages/dashboard/Dashboard";const AppRoutes = () => {  return (    <div>      <React.Suspense fallback={<span>Loading...</span>}>          <Router history={history}>            <Switch>              <PyramidProvider>                <Route path="/" component={Dashboard} />              </PyramidProvider>            </Switch>          </Router>      </React.Suspense>    </div>  );};export default AppRoutes;儀表板頁面import React, { useState, useEffect, useContext } from "react";import { PyramidContext } from "../../context/pyramidContext";import PyramidDetail from "../../components/pyramidUI/pyramidDetail";import PyramidOverview from "../../components/pyramidUI/pyramidOverview";const Dashboard = (props) => {  const { info, setInfo } = useContext(PyramidContext);  return (    <React.Fragment>      {info.uiname === "overview" ? <PyramidOverview /> : <PyramidDetail />}    </React.Fragment>  );};export default Dashboard;概覽組件import React, { useState, useContext } from "react";import { PyramidContext } from "../../context/pyramidContext";const Overview = (props) => {  const { info, setInfo } = useContext(PyramidContext);  return (    <div className="d-flex flex-column dashboard_wrap">      <main>        <div className="d-flex">          <button            onClick={() => setInfo({ uiname: "detail", pyramidvalue: 1 })}          >            change view          </button>        </div>      </main>    </div>  );};export default Overview;我單擊按鈕以呈現detail視圖,一旦刷新頁面,組件就會將其視圖更改為 ,overview而不是停留在detail. 我檢查了本地存儲值,它正在正確更新,但組件視圖仍然沒有按照值保留。我無法理解我在哪里做錯了,請幫助解決這個問題?提前致謝。
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

您永遠不會在信息狀態中使用 localStage 的值,您應該將代碼替換為:

const [info, setInfo] = useReducer(reducer, localState || initialState);


查看完整回答
反對 回復 2022-10-21
  • 1 回答
  • 0 關注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號