javascript – React路由器在更改路由时重新启动子项(不进行协调)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – React路由器在更改路由时重新启动子项(不进行协调),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1365字,纯文字阅读大概需要2分钟。
内容图文
![javascript – React路由器在更改路由时重新启动子项(不进行协调)](/upload/InfoBanner/zyjiaocheng/718/f8d3482a38be4eea86db0cc32372f767.jpg)
我有一种情况,很少的路由由相同的组件组成,我想保持其状态,但有了这种行为,这是相当不可能的.
实例(查看经过的秒数):
https://csb-43lp1km647-nkiinaibit.now.sh
CodeSandbox:
https://codesandbox.io/s/43lp1km647
当然,我可以在更改路线时保存和恢复计时器的状态,但我的应用程序有一个无限的CSS过渡作为背景(不是在每个路线上).
我正在尝试添加密钥,甚至门户网站,但它仍然可以重新安装所有内容.
有没有办法强制执行典型的React reconciliation(仅重新安装必须重新安装的元素)?
更新:
刚发现< Switch />将呈现所有内容,直到找到匹配的元素,并且可以是某个< Route />或者除了里面的任何元素< Fragment />.
码:
<Router history={history}>
<Switch>
<Route path="/third" component={RouteWithoutTimer} />
<React.Fragment>
<Timer />
<Route exact path="/" component={FirstRoute} />
<Route path="/second" component={SecondRoute} />
</React.Fragment>
</Switch>
</Router>
或者使用通配符路由:
<Router history={history}>
<Switch>
<Route path="/third" component={RouteWithoutTimer} />
<React.Fragment>
<Timer />
<Switch>
<Route exact path="/" component={FirstRoute} />
<Route component={NotFoundRoute} />
</Switch>
</React.Fragment>
</Switch>
</Router>
这不是我想要的解决方案,但它运作正常.
解决方法:
您正在每个路由中安装一个新的Timer实例.
如果要跨路由共享组件,则应将其提升到路由的父组件:
<React.Fragment>
<Timer />
<Switch>
<Route exact path="/" component={FirstRoute} />
<Route path="/second" component={SecondRoute} />
</Switch>
</React.Fragment>
内容总结
以上是互联网集市为您收集整理的javascript – React路由器在更改路由时重新启动子项(不进行协调)全部内容,希望文章能够帮你解决javascript – React路由器在更改路由时重新启动子项(不进行协调)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。