2017-02-21 7 views
0

App.js 파일이 있고 내 응용 프로그램의 루트입니다 (iOS 및 Android 참조).
app.js 렌더링 메서드를 호출하기 전에 내가 필요로하는 값인 AsyncStorage에 있습니다.
문제는 그게 늦어서 async이므로 그 값을 얻을 수 없습니다.전체 앱로드 전에 AsyncStorage에서 가치를 얻는 가장 좋은 방법은 무엇입니까

class App extends React.Component { 
    constructor(props) { 
    super(props); 
    this.init() 
    } 
    async init() { 
    try { 
    const value = await AsyncStorage.getItem('@myPoorValue:key'); 
    if (value !== null){ 
    ... 
    } 
} catch (error) {} 
    } 
} 
... 
render (... 

여기 내 문제가 무엇인지 잘 설명했으면합니다.
동기식을 얻을 수있는 방법이 없다는 것을 알고 있지만 (이 방법이 좋음)이 상황에서 무엇을해야할지 모르겠다.
조금 더 설명하려면 I18n을 사용하고 수동으로 설정하기 전에 수동으로 I18n.locale을 일부 값으로 설정하고 다른 구성 요소는 기본값을 가져옵니다.
참고로 나는 또한 redux를 사용하고 선택한 값을 전달합니다.

... 
 

 
constructor(props) { 
 
    super(props) 
 
    
 
    this state = { 
 
    isLoading: true 
 
    } 
 
} 
 
    
 
async componentDidMount() { 
 
    await this.init() 
 
    
 
    // you might want to do the I18N setup here 
 
    this.setState({ 
 
    isLoading: false 
 
    }) 
 
} 
 

 
async init() { 
 
    const value = await AsyncStorage.getItem('@myPoorValue:key') 
 
    ... 
 
} 
 

 
...

것은이 init()이 약속을 반환하고 당신이 그것을 해결할 때까지 기다릴 필요가 :

+0

나는 appNavigator.js를 가지고있을 것 같습니까? – Codesingh

답변

1

는 다음 시도합니다. 그 때 await이 구해집니다.

또한 첫 번째 렌더링시 사용할 로더를 설정하고 AsyncStorage 값을 가져온 후에 상태를 실제 마크 업으로 바꾸기 위해 토글해야합니다. 코드에 넣었지만 설정에 따라 대신 redux 동작을 트리거 할 수 있습니다.