强制React重新渲染使用React.createElement创建的子组件

时间:2019-10-23 19:23:37

标签: reactjs react-router

我正在使用React Router渲染多个级别(使用框架)。

我的Index.js具有:

ReactDOM.render(
<Router history={hist}>
<Switch>
  <Route path="/admin" render={props => <AdminLayout {...props} />} />

然后,AdminLayout类将呈现导航栏,侧边栏和主内容面板。内容面板的显示方式为:

<Route
     path={prop.layout + prop.path }
     children={({ match }) => (
         React.createElement(prop.component,{activeEnvironment:this.state.activeEnvironment})
         )}
     key={key}
     />

如果this.state.activeEnvironment值更改,我想强制重新加载内容窗格。我目前正在重新加载整个页面,该页面可以正常运行,但并不干净。理想情况下,应将边栏和导航栏保持在适当的位置,然后仅重新加载内容窗格。

有人对这样做的方法有任何建议吗?

谢谢你, 马特

编辑:子页面未更新通过状态。但是,出于应用程序逻辑/功能的原因,无论是否可行,都想强制重新加载子页面。再次谢谢你。.

1 个答案:

答案 0 :(得分:0)

Marzelin在以下评论中的回答解决了该问题:

您可能会尝试在activeEnvironment更改时使Route的密钥无效,例如key = {key + this.state.activeEnvironment} – marzelin