2016-05-20 4 views
0

私のコンポーネントは、私の店を汚染する必要のない単純なローカルコンポーネントフラグのためにローカル状態を必要とせず、ディスパッチャとアクションハンドラのすべてのコードオーバーヘッドを必要としません。地元の国家は、反応の還元によって悲しんでいますか?私は、すべてのものを私の店に置く以外に、私のユースケースの回避策は見当たらない。どのようにして、コンポーネントのスコープをresponse-reduxのmapStateToPropsにバインドしますか?

答えて

0

あなたの質問に答える:はい、地方の州はreact-reduxによって避けられます。

reduxの哲学は、あなたのコンポーネントは純粋にあなたのアプリの状態のビューであるということです。彼ら自身は国家を保つべきではありません。

しかし、あなたが怒りを訴える前に、あなたは還元の素晴らしい点の1つは、店舗がうまく動作することです。それは単なる状態木であり、あなたが書いた減速器はその木のそれ自身の部分を扱う必要があります。

export default const isFullScreen = (state = false, action = null) => { 
    if (action && action.type === actions.TOGGLE_FULL_SCREEN) { 
    return !state; 
    } 
    return state; 
}; 

お店では、すべてのもの、小さなものを置くことの利点は数多くあります:私は、5行のすべてです私のアプリでいくつかの減速を持っています。しかし、最大のものは、他のコンポーネントが他のコンポーネントの状態をmapStateToPropsで知ることができるということです。あなたが地方の州に頼っているならば、その透明性はなくなり、物事は同期できなくなります。もう一つの利点は、あなたが状態の履歴から状態のスナップショットをプッシュしてポップアップし、アプリ内のアクションを後ろに進めることができ(地方の状態も消える)、クールな時間旅行のものを実装できることです。

しかし、一日の終わりに、それは店にすべてを置くためにあなたを説得するのに十分ではない場合、まだReduxのを壊すことなく、ローカルな状態を使用することが可能です。私はそれをお勧めしません。

幸運を祈る!

+0

理にかなっているおかげで、私はそれを望むもう少し明確で反応し、Reduxのモジュールを文書化していたと私はそれが構築物は非常に明確にするために何らかの形で反応するコンポーネントのローカル状態を無効ことがしたいです。 – LMS5400

+0

これは間違いなく慣れるまでにかかります。私はそれが私のコンポーネントを純粋な機能にしようとするのに役立つことを発見しました。同様に、ES6の 'class'や' React.createComponent'を使わずに、コンポーネントを関数として引数として渡します。それはあなたが地方の州を使うのを止めるのを助けるでしょう。 – Ian

+0

これを使用して私のアプリをさらに改造して変換した後、私はすべての道を戻った!私はちょうど私が道に沿って行うすべての小さな変化のための減速とハンドラをコーディングしようとするのが好きではありません。私は柔軟で軽量なコンポーネントがほしいと思うし、私は正直に私的な状態を欲しい。 私は、私のデータベースとそれを超えて、それに行くためにいくつかのヘルパー変数から行くデータのための私のReduxの店を予約しています、残りは民間であり、これはに対処する方法が容易に感じています。 – LMS5400

関連する問題