我正在構建一個在整個應用程序中使用的Header組件。我正在使用React和Redux(obvz)來爲Header保存默認狀態,例如在頭減速機的默認狀態參數:大型應用程序中的Dynamic React Redux Header組件
state = {
showUserMenu: true,
redirectUrl: '/'
}
這是完美的地方所有這是真實的成分,但部分航線/組件我想頭不顯示用戶菜單。
所以,當這些部件安裝我派遣HIDE_USER_MENU動作。
的問題是,因爲默認設置爲true,則userMenu的將在那裏開始,即使派遣被稱爲componentWillMount,會有一秒鐘,其中顯示userMenu的。
所以沒有默認?但是反過來卻是如此,它默認不顯示菜單,只有在處理完成後纔會出現。
This is nice,但它沒有更進一步(對我的例子),並解釋瞭如何根據路徑或組件選擇減速器。
我也曾嘗試使用react-router-redux射擊基於location.pathname行動,但即使這並不足夠快的速度發生,以避免FOUH(無用頭的閃光!「()
我想知道是否有一個既定的模式爲動態加載初始狀態,這是保證出現在最初的渲染。
希望很清楚我是問,非常感謝您的幫助!
謝謝你的想法湯姆!我知道我可以在每個組件中呈現標題,但這正是我試圖擺脫這種情況的原因。有一個頭部呈現在50多個組件的所有具有不同的配置是痛苦的非DRY :(當我提到基於location.pathname使用react-redux-router的射擊動作時,我使用了history.listen,例如LOCATION_CHANGE。你暗示),這有相同的效果。我也嘗試在高階組件中包裝標題,同樣的問題... – jamieallen59
如果所有的組件都有不同的配置,那麼就沒有任何重複;)!儘管如此,包括如果你把所有東西都分解到像StandardScreen這樣的組件中(例如,一條路由可能是'),那麼這就是路由的配置,而不是重複。也就是說,你幾乎可以肯定需要在某些時候更新存儲狀態作爲路由的一部分:如果你使用history.listen並讓回調調度你自己的routeChanged動作,這是否會給你一個可行的鉤子來更新你的商店狀態呈現? –
TomW
對不起,我們走了!我明白你的意思,但對我來說,這正是Redux的職責所在:在整個應用程序中處理狀態,這正是我正在嘗試使用的方式。所以你知道,我更新狀態的代碼已經在history.listen回調中了,例如:'history.listen(location => dispatch(hideUserMenu())); 「那裏有一些有條件的東西來檢查我在哪條路線上,但就是這樣! – jamieallen59