2017-07-04 15 views
2

私は、名前がヘルパーであるクラスを持つReactネイティブアプリケーションを持っています。これらはアプリケーション関連の静的ヘルパー機能のセットです。ほとんど私はそれらをHelpers.functionName()のように呼びます。この静的メソッドからreduxストアに到達する最善の方法は何ですか?私はそれを修正してそれを読んでみたい。静的関数から還元状態に達する

私はこのようなヘルパーています

class Helpers extends Component { 
    static getState(){ 
    return state; 
    } 
} 

は私がConnectを使用しようとしましたが、getStateを関数内this.propsは未定義です。

答えて

2

からストアを読み取ることができます。あるいは、グローバル変数をストアして、それにアクセスすることもできます。

私はこれらの方法のいずれかを最もよく説明することを躊躇しますが、その点については他の好きな形容詞を使用します。 Reduxはさまざまな方法で使用できますが、私は、店舗アクセスをグローバルなものにするのをやめようと考えていました。

また、ヘルパー関数からストアを直接変更することは、まったく別のレベルであることに注意してください。 reduxの意図は、リデューサ関数だけがディスパッチされたアクションに応答して状態を変えるということです。

最後に、ヘルパーは本当にあなたが使用しているコンポーネントですか、静的関数の束のためのコンテナですか?後であれば、それをComponentから派生させるのは間違いでしょう。

+0

グローバル変数として作成しました。ありがとうございます。はい、それは静的メソッドの単なる一束です。 – PumpkinSeed

1

Providerコンポーネントを使用した場合、Reactによって提供されたcontext APIを使用してreduxストアにアクセスできるようになります(店舗の状態によって)。

コンテキストを公開するには、Helpersコンポーネント内にcontextTypesを定義する必要があります。その後

static contextTypes = { 
    store: PropTypes.object 
} 

、コンポーネント内部で、あなたは一つの方法は、それを必要とする各静的関数の引数として店を渡すことであろうthis.context

関連する問題