私は現在、バックエンドに生徒とキャンパスのデータを持つ単純なreact-reduxアプリケーションを構築しようとしています。 OnEnterはここで働いていましたが、新しい反応ルータには存在しません。React-Router v4 onEnterの置き換え
このアプリケーションは、実際の各コンポーネントでcomponentDidMountを実行する代わりに、初期データを最初に読み込もうとします。それが推奨されるアプローチですか、それとも私が気づいていない代替パターンがありますか?
/* -------------------< COMPONENT >------------------- */
import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import Home from './components/Home';
import Students from './components/Students';
const Routes = ({ getInitialData }) => {
return (
<Router>
<div>
<Route exact path="/" component={Home} onEnter={getInitialData} />
<Route path="/students" component={Students} />
<Route path="*" component={Home} />
</div>
</Router>
);
};
/* -------------------< CONTAINER >-------------------- */
import { connect } from 'react-redux';
import receiveStudents from './reducers/student';
import receiveCampuses from './reducers/campus';
const mapState = null;
const mapDispatch = dispatch => ({
getInitialData:() => {
dispatch(receiveStudents());
dispatch(receiveCampuses());
}
});
export default connect(mapState, mapDispatch)(Routes);
ここでの問題は、それがフェッチ行うの前に ''がレンダリングされます、 'getInitialData'が非同期であればということです。あなたに迷惑をかけないで、これはv4実装の欠陥です。 –
私のアプリケーションでは、データがロードされていることを示すフラグを使用し、コンポーネントでチェックします。ローディング中にインジケータが表示されているので、それほど悪くはありません – akmed0zmey