【发布时间】:2017-02-23 12:37:55
【问题描述】:
我知道它不是 react-router 的默认行为/功能来帮助我们轻松地重新加载当前组件,但我在我的应用程序中确实需要它。
我的应用程序处理产品。我有一个可以加载的产品列表,当我点击一个项目时,它会显示相关的产品详细信息。
在该页面上,我有相关的产品链接,它们加载相同的组件,但包含另一个产品详细信息,位于
<Route path="/products/:id/details" component={ProductDetail} />
我在 componentWillMount 中获取数据,似乎如果我只更改 URL,则不会安装新组件,因此,我总是显示旧数据,而不获取任何内容。
作为一个使用 React 的初学者,我正在寻求一些帮助,或者一些技巧来重新加载该页面所涉及的组件。我的意思是能够用好的产品重新加载 ProductDetail。
我试图用 componentWillUpdate 环顾四周(一种我可以看到路由器 URI 发生变化的方法 :D),但我无法在其中设置状态来重新加载我的组件(它似乎不是一个好的练习)
知道我怎样才能完成这项工作吗?
编辑:根据第一个答案,我必须使用 onEnter。我现在坚持将状态/道具传递给相关组件的方式:
const onEnterMethod = () => {
return fetch(URL)
.then(res => res.json())
.then(cmp => {
if (cmp.length === 1) {
// How to pass state / props to the next component ?
}
});
};
【问题讨论】:
标签: javascript reactjs react-router jsx