私はアプリケーション全体で使用されるヘッダコンポーネントを構築しています。私はReactとRedux(obvz)を使ってヘッダのデフォルト状態を保持しています。ヘッダ減速のデフォルトの状態の引数に:大規模アプリケーションのDynamic React Reduxヘッダコンポーネント
state = {
showUserMenu: true,
redirectUrl: '/'
}
これは、これが本当であるすべてのコンポーネントに最適ですが、いくつかのルート/コンポーネントのために私はないにヘッダをしたいユーザメニューが表示されます。
これらのコンポーネントをマウントすると、私はHIDE_USER_MENUにアクションをディスパッチします。
問題は、デフォルトがtrueに設定されているため、userMenuは、当初は存在しと発送はcomponentWillMountに呼び出された場合でも、userMenuは示し一瞬があるだろうということです。
デフォルトはありませんか?しかし、その逆は真です。デフォルトではメニューが表示されず、アクションが処理されると表示されます。
This is niceが、それは(私の例のために)だけでさらに一歩進み、減速機は、ルートまたはコンポーネントのいずれかに基づいて選択されるであろう方法を説明していませんでした。
私もreact-router-reduxを使用してlocation.pathnameに基づいてアクションを発射しようとしているが、それでもこれはFOUH(不要なヘッダのフラッシュを避けるために十分に迅速に発生しません:! '()
確立があった場合、私は疑問に思いました動的に初期状態をロードするためのパターン、それはレンダリングの初期に現れることが保証される。
は、任意のヘルプは感謝、私が求めていたものを明確に願っています!
あなたの考えをありがとうTom!私は、各コンポーネント内でヘッダーをレンダリングできることを認識していますが、これは正確に私がこれで取り除こうとしていたものです。ヘッダーを50以上のコンポーネントでレンダリングすると、構成が異なるので、痛いほどun-DRYです:(また、私はlocation.pathnameに基づいて、react-redux-routerを使ってアクションを実行すると述べました。同じことを言っている)。私はまた、高次のコンポーネント、同じ問題でヘッダをラップしようとしました... – jamieallen59
すべてのコンポーネントが異なる設定をしている場合、繰り返しはありません;)!例えば、 StandardScreen> ')のようなコンポーネントにすべてを渡した場合など、これは重大なことです。つまり、ある時点では、ルーティングの一部としてストア状態を更新する必要がほとんどあります:history.listenを使用し、コールバックに独自のrouteChangedアクションをディスパッチする必要がある場合は、その前にストア状態を更新することができますレンダリング? –
TomW
申し訳ありませんが穴の上にあった!私はあなたが何を意味するのかを知っていますが、これはまさにReduxのためのものです。アプリケーション全体の状態を処理することです。ですから、状態を更新するための私のコードはすでにhistory.listenコールバックにあります。例えば、 'history.listen(location => dispatch(hideUserMenu())); 「そこには、私が行っているルートを確認するための条件付きのものがいくつかありますが、それだけです! – jamieallen59