我目前在http://example.com/parentdir/module/2/
此 URL 实际上加载 Module.js 类,如以下路由所示:
<Route exact path={"/parentdir/module/:id"} component={Module} />
这包含在<BrowserRouter>
and <Switch>
我的 index.js 文件中定义的元素。
模块类有一个constructor
and componentWillMount
方法。这些设置了记录 #2 的初始详细信息和加载信息。到目前为止一切正常。
现在,我的问题是,在 Module.js 的孙子组件中,我使用以下重定向重定向到另一个页面,例如第 3 页:
return (
<Redirect to="/parentdir/module/3/" />
)
构造函数或 componentWillMount 不会运行,因此记录 #3 无法正确加载。这是因为该组件从加载记录 #2 时就已经加载到内存中了吗?重新加载 Module.js 以便正确加载记录 #3 的最佳方法是什么?我是否必须以某种方式重新初始化该类?或者我是否必须以某种方式将数据从孙子组件传递回模块类?后一种方法似乎很乏味。
只是为了澄清,如果我直接去http://example.com/parentdir/module/3 http://example.com/parentdir/module/3在地址栏中,一切正常,但如果我在 ReactJS 环境中重定向到同一地址,它就无法正常工作。
Update
到目前为止,我的问题已经得到了两个答案。一种解决方案建议使用 componentWillReceiveProps。另一种解决方案建议将方法作为支柱传递给子代,然后传递给孙子。使用这些方法各有利弊,还是只是一个偏好问题?