我目前正在嘗試構建一個簡單的react-redux應用程序,該應用程序在後端有學生和校園數據。 OnEnter曾經在這裏工作,但它在新的react-router中不存在。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