也许你可以在配置根路由时利用
onEnter和
onChange回调函数。在onEnter回调中,你可以记录初始路由路径,在onChange回调中,你可以比较当前/下一个路由路径,检查记录的路径历史,并记录路径。因此,由于每次路由更改时都可以检查和比较路由路径,所以可以阻止任何循环链接。
关于保存所有组件的状态,如果您使用redux,则整个应用程序状态可以保存在一个对象中,即redux存储库。
如果您想在离开之前保存组件的状态,可以在componentWillUnmount中分派一个
save component state
操作,并在componentWillMount中恢复状态。
以下是一个片段:
var rootRoute = {
path: '/',
onEnter: enter,
onChange: change,
component: MyApp,
indexRoute: { component: Home },
childRoutes: [
LoginRoute,
...
{path: 'home', component: Home},
{
path: '*',
component: NotFound
}
]
};
function enter (next) {
pathStore.record(next.location.pathname);
}
function change (cur, next, c) {
if (cur.location.pathname !== next.location.pathname) {
...
}
}