当前位置: 首页 > 知识库问答 >
问题:

React路由器重新渲染相同的组件

马弘和
2023-03-14

问题:

有异步路由,从中获取参数电影并返回电影容器(组件)。问题是当我从一个电影容器到另一个电影容器(只是相同的路由,但不同。参数)我的路由器卸载并重新渲染电影容器组件。但它应该只传递新的道具,不要触及我的组件生命周期。怎么解决呢?我做错了什么?

代码:

路由器

<Route path="/" component={AppLayout}>
  <IndexRoute components={{ children: Home }} />
  <Route path=":movie/about" getComponents={(nextState, callback) => {
    window.scrollTo(0, 0);
    const movie = findMovie(nextState.params.movie);
    return callback(null, { children: (router) => <Movie movie={movie} router={router} /> });
  }}/>
  ....
</Route>

组件将装入电影组件中

  componentWillMount() {
    console.log('MOUNT MovieContainer');
  }

更新:好的,做了一些实验。

替换

返回回调(null,{子:(router)=

具有

返回回调(空,电影)

Andd电影组件未重新渲染。刚刚更新。太棒了!但是现在如何传递道具呢?


共有1个答案

颜欣怡
2023-03-14

伟大的最后我找到了解决办法

<Route path=":movie/about" getComponents={(nextState, callback) => {
  window.scrollTo(0, 0);
  callback(null, Movie);
}}
/>

在组件中,我可以通过this.props.params.movie访问道具,而不是在构造函数中查找电影/组件WillMountconst电影=findMovie(nextState.params.movie);

 类似资料:
  • 我在React路由器2.2.1中使用React 15.0.1。我将应用程序用作父组件,它呈现从路由器处理程序传递的子组件。 这是我的导航栏组件。 这些是我的路线处理程序。当用户在路由上着陆时,将对其进行身份验证检查。如果身份验证失败,它们将被重定向到登录路径。 当应用程序组件第一次挂载导航栏和子组件时,它会检查身份验证并相应地添加到导航栏的链接。成功登录后,当用户从登录路由重定向到索引路由时,子组

  • 我是一个新的反应和反应。我已经花了几个小时了,我只是走到了死胡同。 我正在使用CreateReact应用程序和用于css的bulma。我的依赖项: }, 我查看了stackoverflow的所有相关问题,创建了react应用程序文档,并在他们的回购协议中搜索了他们的开放问题部分,谷歌搜索了所有可能的关键字。我不知所措。 我的路由器只会呈现一个路由(Homeroute)。 如何让它显示/创建路线?

  • 我使用开关标签路由不同的路由 但这只会加载路径/和/主页的第一个组件,也会加载loginpage nothing,并且主页组件不会加载到/主页路径! 我在切换前尝试过使用浏览器路由器标签,尝试过先加载主页,也是一样的只有主页组件加载 App.js 登录age.js 家age.js 预期 访问/应该加载登录页面 访问/主页应加载主页

  • 本文向大家介绍React-Router 4怎样在路由变化时重新渲染同一个组件?相关面试题,主要包含被问及React-Router 4怎样在路由变化时重新渲染同一个组件?时的应答技巧和注意事项,需要的朋友参考一下 在生命周期里面判断路由是否发生变化 参考:React 如何监听路由变化重新渲染组件

  • 当按下{Link}并更改路由时,即使在react router dom的交换机组件之外,报头组件NavBar也会保持重新命名。 这里是文件: Main index.js文件: Home.js Contact.js 当前的项目非常简单:index.js文件包含Home和Contact组件,NavBar组件作为交换机外部的头。

  • 嗨,我不确定这是一个期望的行为还是一个bug。 这是一个空的create react应用程序示例,带有 版本: 反应:^16.13.1, react-dom:^16.13.1, react-router-dom:^5.2.0, 反应脚本:3.4.1 部件: /-对于主部件 /触点-用于触点组件 这里提供小提琴 多次单击“主页”链接会显示一条