1

react-native-router-flux の非同期ロジックに基づいて異なる初期シーンを設定することは可能ですか? 私が実際にやろうとしているのは、アプリを初めて実行したときに別のシーン (ログイン ページとしましょう) を表示することです。ローカルの sqlite データベースに値を保存して、最初の実行を決定します。

私の現在の実装では、「ダミー」コンポーネントを最初のシーンとして設定し、そこからデータベース ロジックを実行し、その後適切なシーンにリダイレクトします。それは機能しますが、もっと良い方法が必要だと強く感じています。

ありがとう。

//currenlty, App.js looks something like this:

//imports here  

//app starting point, imported into index.ios.js and index.android.js
export default class App extends Component {

    render() {
        const store = createStore(allReducers, {});

        return (
            <Provider store={store} >
                <Router>
                    <Scene key="dummy" component={Dummy} />
                    <Scene key="login" component={Login} />
                    <Scene key="main" component={Main} />
                </Router>
            </Provider>
        );
    }

}



And dummy component something like this:


//imports here

class Dummy extends Component {

    componentWillMount() {
        const initService = new InitService();

        //some asyn func that checks local db to determine if this is the first time running
        initService.hasRunBefore()
            .then(value => {
                if (value === true) {
                    Actions.main({ type: 'replace' });
                }
                else {
                    Actions.login({ type: 'replace' });
                }
            }
            );
    }

    render() {
        return (
            <View />
        );
    }
}

export default Dummy;
4

0 に答える 0