我正在重寫一個小應用程序以嘗試更好地理解React。我試圖確定共享「單身」數據的「正確」/最有效的方法 - 例如,登錄時已正確驗證身份的用戶。在反應應用程序中共享全局/單例數據
眼下父「應用程序」組件在其狀態,這是我傳給子組件作爲一個道具屬性user
:
<Toolbar user={this.state.user} />
<RouteHandler user={this.state.user}/>
(我使用的反應路由器)。這是有效的,並且在像這樣的只讀情況下,並不可怕。然而,我的實際登錄表單組件(這是一種途徑,將裏面RouteHandler
),需要一些方法來「設置」新用戶數據,因此我還需要一些回調傳遞:
<RouteHandler onAuthenticated={this.setUser} user={this.state.user}/>
不一個很大的問題,除了現在這種方法可用於由RouteHandler
處理的每個「路線」。
我一直在閱讀,它似乎是唯一的選擇是EventEmitter
或Dispatch
式系統。
有沒有更好的方法我錯過了?事件發射器/調度器系統值得使用的時候,真的只有一個或兩個應用程序使用這個小?
更復雜你使用Flux嗎?在Flux應用程序中,像這樣的狀態將進入商店(例如「SessionStore」)。 –
你可以編寫一個mixin來處理'localStorage'並將用戶保存爲一個項目。 – marcel