2017-05-18 5 views
0

Relay Classic에서는 react-relay-network-layer에 대한 함수를 전달하여 필요한 토큰을 약속대로 반환합니다. 릴레이 모던 (Relay Modern)의 동급 제품은 무엇입니까?Promise 기반 환경에서 Relay Modern을 설정하는 방법은 무엇입니까? (예 : Auth0 또는 다른 비동기 인증 서비스)

환경 약속이 해결 될 때까지 로딩 화면을 표시 한 다음 환경이 있고 쿼리를 가져 오면 기본 구성 요소를 표시하는 것이 이상적입니다.

QueryRenderer 환경을 스왑하는 방법을 알고 있다면 문제도 해결됩니다.

답변

0

recommended method here은 fetchQuery 내부에 인증 토큰을 가져 오는 것입니다.

나머지 과제는 인증이 진행되는 동안 Relay가 여러 번 가져 오는 경우에도 비동기 인증 기능이 한 번만 호출되도록하는 것입니다. 우리는 싱글 톤 약속을 사용하여이 작업을 수행했습니다. 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); 
    } 
}