0
後、私はそうのようないくつかのルートを設定しているリアクト:変更ルートは、ルータは、非同期アクション
import createHistory from 'history/createMemoryHistory';
import { NativeRouter, Route } from 'react-router-native';
<NativeRouter history={createHistory()}>
<View style={styles.container}>
<Route exact path='/' component={Home}/>
<Route path='/page1' component={Page1}/>
</View>
</NativeRouter>
は、今では例えば私のHome
クラスでプログラムのルートを変更するには簡単です:
this.props.history.push('/page1');
しかし、私はReduxので派遣しています非同期アクションの場合:
export function login(email, password) {
return function(dispatch) {
dispatch(setAuthBusy(true));
return auth.signIn(email, password)
.then(function (user) {
dispatch(setAuthBusy(false));
dispatch(setUser(user));
// !CHANGE ROUTE HERE!
})
.catch(function (err) {
dispatch(setAuthBusy(false));
dispatch(setAuthError(err.message));
});
};
}
この場合、ユーザーを認証するログインアクションであることがわかります。ユーザーが正常に認証された場合にのみ、ルートが/page1
に変更されます。
あなたの非同期アクションのルートを変更することは正しい方法ではないので、アプリケーションの一般的なアーキテクチャーとフローに関してアドバイスをいただきたいと思います。ありがとう!
@Okazariさんの返信をありがとう、私はすでに上記の例ではredux-thunkを使用しています。あなたはあなたの答えを詳述し、ルートを変更する方法を少し具体的に教えてください。 – Tiwaz89
@ Tiwaz89ユースケースに合った例を改善しましたが、これは十分ですか? – Okazari