簡體   English   中英

在保持狀態的同時在 React 中切換布局

[英]Switching layouts in React while maintaining state

我有一個用兩種不同布局編寫的小型 React Web 應用程序:一種用於桌面,一種用於移動設備。 我想將兩者合二為一,根據窗口大小在布局之間切換。 理想情況下,我會在應用程序的根目錄下有一個開關,如下所示:

const Root = () => {
  return isMobile ? <MobileLayout /> : <DesktopLayout />;
}

大部分組件在兩個布局之間重用,但是有少數組件依賴狀態,因此在布局之間切換會導致它們丟失狀態。 我可以重構布局,這樣有狀態的組件就不會有條件地呈現,但是有沒有更好的方法來解決這個問題?

我認為最簡單的方法是在 React 中提升狀態 在布局切換期間應保留的所有狀態都應放置在Root組件中,並作為道具傳遞給<MobileLayout /><DesktopLayout /> 如果需要從<MobileLayout /><DesktopLayout />更新狀態,您可以使用回調。

例如

const Root = () => {
  const [someState, setSomeState] = useState({})
  return isMobile ? <MobileLayout someState={someState} setSomeState={setSomeState}/> : <DesktopLayout someState={someState} setSomeState={setSomeState}/>;
}

<MobileLayout /><DesktopLayout />您可以使用 props 以相同的方式將從Root接收到的 stets 傳遞給子組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM