簡體   English   中英

如何在已安裝和卸載的React組件中保留狀態?

[英]How do I retain state in a React component that gets mounted and unmounted?

現在,我具有三個主要組件,它們處於一種選項卡布局中,其中一個標題位於頂部,並且其中一個活躍的組件是通過一個非常簡單的哈希路由器在頂級App組件中進行控制的。

現在,如果我在Profile組件中設置了一個狀態,那么當我切換到其他組件之一時,該狀態將被拋出。

我該如何預防? 我應該將狀態放到App組件上,還是在Redux或Flux之類的東西有用處?

  Home   |   About   |   Profile
-----------------------------------
|                                 |
| Content                         |
...

頂級組件:

function App(props) {
  switch (props.location[0]) {
    case '':
      return <Home />;
    case 'about':
      return <About />;
    case 'profile':
      return <Profile />;
    default:
      return <NoMatch />;
  }
}

App.propTypes = {
  location: React.PropTypes.array.isRequired,
};

function renderOnHashChange() {
  let location = window.location.hash.replace(/^#\/?|\/$/g, '').split('/');
  const application = <App location={location} />;

  ReactDOM.render(application, document.getElementById('app'));
}

window.addEventListener('hashchange', renderOnHashChange, false);

renderOnHashChange();

簡單的答案是,您需要使用某種類型的存儲來保留應用程序的全局狀態。 您的選擇取決於您; 您已經確定了一些受歡迎的示例,但還有更多示例。 通過調度操作來更新商店。

我不建議將狀態添加到頂級組件,因為這將要求您通過應用程序的每一層傳遞回調以調用setState

暫無
暫無

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

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