【发布时间】:2016-08-17 18:07:56
【问题描述】:
我有一个PageBuilder 组件,它根据配置文件动态构建编辑/列表页面。我想要使用相同的PageBuilder 组件的动态路由(例如“/collection/list”、“/collection/edit/123123”、“/dashboard”等)。
我无法使其正常工作 - 例如,如果我在“/collection/list”中,当单击指向“/collection/edit/1231”的链接时不起作用。只有刷新该 URL 才有效(反之亦然)。
我尝试将我的初始化代码 PageBuilder 的 componentWilLReceiveProps 放入,但它似乎每秒都会调用它。
我的路线如下所示:
<Route path="/" component={App}>
<IndexRedirect to="/dashboard" />
<Route path="/:page/:collection/:action(/:entity_id)" component={PageBuilder} />
<Route path="/:page" component={PageBuilder} />
</Route>
还有我的 PageBuilder:
constructor(props) {
super(props);
this.createSectionsHTML = this.createSectionsHTML.bind(this);
this.onChange = this.onChange.bind(this);
this.onSave = this.onSave.bind(this);
}
getPageName() {
return this.props.params.page.replace(/-/g, '_').toLowerCase();
}
componentWillReceiveProps(props) {
this.action = this.props.params.action;
}
componentWillMount() {
let pageName = this.getPageName();
this.props.dispatch(setInitialItem(pageName));
}
componentDidMount() {
let pageName = this.getPageName();
let { collection, entity_id } = this.props.params;
if (collection && entity_id) {
let { dispatch } = this.props;
dispatch(getCollectionEntity(collection, entity_id, pageName));
}
}
对于每次重定向到不同路线时如何重新渲染页面有什么想法吗?
如果我可以在重定向时卸载并重新安装组件,那就太好了,但我不确定如何告诉 React Router 这样做......
谢谢!
【问题讨论】:
标签: javascript reactjs react-router