我正在使用以下详细信息构建应用
使用Link
标记从组件到组件进行路由时,它可以完美地运行。它调用组件所需的数据并呈现页面。但是,当我点击使用与当前组件相同的组件的Link
时,我看到的是网址更改。
我试图让它发挥作用。
到目前为止,我已经尝试了this问题中的步骤,但解决方案对我不起作用。这是我实施的代码
componentWillReceiveProps(nextProps) {
if (nextProps.article.get('id') !== this.props.article.get('id')) {
console.log('i got trigggerd YESSSSSSSSSSSSSSS');
}
}
但变量nextProps
始终与当前道具相同。
我决定调用我在componentWillMount
中使用的相同代码,但这也不起作用。
componentWillMount() {
let { category, slug } = this.props.params;
this.props.loadArticleState({ category, slug });
}
当我将它放入componentWillReceiveProps
时,它只会创建一个无限循环。
我认为问题是点击链接从不调用与之关联的数据。由于数据加载了
static fetchData({ store, params }) {
let { category, slug } = params;
return store.dispatch(loadArticleState({ category, slug }));
}
感谢任何帮助。
答案 0 :(得分:2)
我创建了一个函数来测试先前的数据是否与更改的数据相同。
compareParams(prevProps, props) {
if (!prevProps || typeof prevProps.params !== typeof props.params) {
return false;
}
return Object.is(props.params, prevProps.params);
}
在compoonentDidUpdate
我们使用此函数来确定数据是否应该更新
componentDidUpdate(prevProps) {
if (this.compareParams(prevProps, this.props)) {
return;
}
this.props[this.constructor.reducerName](this.props.params);
}
如果接收到新数据,此代码会更新使用相同反应组件的页面主体。
答案 1 :(得分:0)
也许您可以尝试在Route组件上使用onChange事件,检查Route API,然后向子组件发信号通知需要刷新...