2017-05-18 5 views
0

Relay Classicでは、react-relay-network-layerに関数を渡して、必要なトークンを約束して返すだけです。リレーモダンには何がありますか?プロミスベースの環境でリレーモダンを設定する方法は? (Auth0や別の非同期認証サービスなど)

理想的には、Environmentの約束が解決されるまでLoading画面を表示してから、Environmentを取得してクエリを取得すると、メインのComponentが表示されます。

QueryRendererの環境をどのように置き換えるかを知っていれば、それも問題を解決します。

答えて

0

recommended method hereは、fetchQuery内で認証トークンをフェッチすることです。

残りの課題は、認証がまだ進行中にリレーが複数回フェッチされても、非同期認証機能が1回だけ呼び出されるようにする方法です。私たちはこれをsingleton約束で行った。 fetchQueryを呼び出すたびに、同じ約束で静的なPromise.resolve()メソッドが呼び出されるため、認証呼び出しが終了すると、すべてのfetchQuery呼び出しは、必要な認証情報で続行されます。

のでfetchQueryはと認証トークン(JWT)を取得します。

const authToken = await AuthToken.get(); 

そして持つAuthTokenは(活字体)のようになります。

class AuthToken { 
    private static _accessTokenPromise: Promise<string>; 

    public static async get() { 
    if (!this._accessTokenPromise) 
     this._accessTokenPromise = this.AuthFunction(); // AuthFunction returns a promise 

    return await Promise.resolve(this._accessTokenPromise); 
    } 
} 
関連する問題