2017-05-28 11 views
0

私はReactネイティブアプリケーションを開発中です。グローバルネイティブの状態ネイティブ

ログインしているユーザーのユーザーIDを保存して、ユーザーがすべてのコンポーネントにログインしているかどうかを確認します。

私が探しているのは、クッキー、セッション、またはグローバルな状態です。

私はReduxを使うべきだと読んだことがありますが、これはあまり複雑に思えますし、react-navigationと動作させるのは非常に難しいです。私が望む唯一のことは、すべてのコンポーネントの単一のグローバル状態/変数にアクセスできるようにすることですが、ほとんどの場合アクションとレデューサーを定義する必要があります。

Reduxを使用するために私のアプリ全体を再構成する必要がありますか?

+0

私は複数の店舗が罪であるとは思わないが、ストアは値(またはオブジェクトや配列など)を含むものであり、ストアされたデータが変更されたときにそのすべての購読済みリスナーに変更通知を提供する。 – EpicPandaForce

+0

リアクションコンポーネントにはコンテキスト変数などの選択肢がありますが、長期的には、構造化され、管理しやすく(そしてテストする)ためには、より効率的であると思います。最初は気にしていないようですが、すぐにはそれほど気にならないことが分かります。 – sooper

答えて

0

状態管理の点では、alternatives to Reduxがあります。ジャンプスーツとモックスを見ることをお勧めします。しかし、それらがReduxより簡単であるとは思わない。国家管理は主に魔法のようなものであり、殆どの機器は舞台裏で行われます。

しかし、グローバルな状態管理が必要だと思っても、ReduxやMobxなどに関係なく、ソリューションの1つを習得するには時間がかかります。AsyncStorageや何かハッキーを使用することはお勧めできません。

+0

'AsyncStorage'のようなコンポーネントは永続性のためのものです、私はOPは一般的にメモリにあるはずのアプリケーションの状態を管理することに関係していると思います。 – sooper

+0

@sooperだから、私は '' 'AsyncStorage'''を推奨していません。 – milkersarac

0

私は通常、このようなグローバルを行います

私は、ユーザー名を保存するために、そのようなglobals.js

module.exports = { 
    USERNAME: '', 
}; 

何かそしてあなただけインポートする必要がありクリート:

GLOBAL = require('./globals'); 

をとデータを保存する場合は、ユーザー名を保存するだけとしましょう:

var username = 'test'; 
GLOBAL.USERNAME = username; 

これで、必要なページにGLOBALをインポートして使用するだけで、if (GLOBAL.username == 'teste')を使用するだけです。

+0

この方法は正しく動作せず、this.stateのような変更を引き起こさない – Ansyori

関連する問題