【发布时间】:2017-01-23 16:25:25
【问题描述】:
目前我在容器组件的生命周期方法componentWillMount中从api预加载数据:
componentWillMount() {
const { dept, course } = this.props.routeParams;
this.props.fetchTimetable(dept, course);
}
当用户导航到路由/:dept/:course 时调用它,并且它工作正常,直到您从假设:/mif/31 导航到 /mif/33,然后按返回按钮。组件实际上并没有重新初始化,因此没有调用生命周期方法,也没有重新加载数据。
在这种情况下是否有某种方法可以重新加载数据?我应该使用另一种预加载数据的方法吗?我看到反应路由器会在任何位置更改时发出 LOCATION_CHANGE 事件,包括导航回来,所以也许我可以以某种方式使用它?
如果重要,以下是我实现数据加载的方式:
import { getTimetable } from '../api/timetable';
export const REQUEST_TIMETABLE = 'REQUEST_TIMETABLE';
export const RECEIVE_TIMETABLE = 'RECEIVE_TIMETABLE';
const requestTimetable = () => ({ type: REQUEST_TIMETABLE, loading: true });
const receiveTimetable = (timetable) => ({ type: RECEIVE_TIMETABLE, loading: false, timetable });
export function fetchTimetable(departmentId, courseId) {
return dispatch => {
dispatch(requestTimetable());
getTimetable(departmentId, courseId)
.then(timetable => dispatch(receiveTimetable(timetable)))
.catch(console.log);
};
}
【问题讨论】:
标签: javascript reactjs redux react-router react-router-redux