我目前正在尝试构建一个简单的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