首页 web前端 js教程 分析:React-Router路由跳转时触发两次render的情况

分析:React-Router路由跳转时触发两次render的情况

Jul 22, 2017 pm 01:57 PM
react-router render 两次

问题:React-Router路由跳转时,render触发两次,导致页面重复渲染。

原因:项目中使用的react-router ^3.x.x。react-router路由跳转时,this.props.location.action的值会有两种状态。这两种状态都会触发render。故页面渲染两次。

     1、当点击Link时,this.props.location.action=PUSH,2、当浏览器前进后退时,this.props.location.action=POP。

     所以当点击了Link时,状态先是PUSH,之后浏览器发生前进后退,状态变为POP。

解决方案:在路由层,使用react周期函数 shouldComponentUpdate(生命周期不熟悉的同学请另查资料) 进行 this.props.location.action值得判断。根据项目实际需要判断值是PUSH,或者是POP。

     本人选择的是POP,因为项目中有些需求要使用到 window.location.hash='xxxxxxxx',这种情况PUSH是触发不到的,所以路由跳转会失败。

1 shouldComponentUpdate() {2         // POP 浏览器前进后退, PUSH 点击Link3         return this.props.location.action === "POP"4 }
登录后复制

备注:facebook官方说此情况是 react-router 的BUG,已经在 ^4.x.x中修复了。

     以上内容均是本人在实际项目开发中所遇所得,每个人所遇BUG不同,请大神轻喷。谢谢! 

以上是分析:React-Router路由跳转时触发两次render的情况的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

vue3怎么通过render函数实现菜单下拉框 vue3怎么通过render函数实现菜单下拉框 May 10, 2023 pm 04:28 PM

技术方案先写一个下拉框组件首先,我们先写一个组件,用来展示下拉框内容。组件名称起为:Select.vue福利商城Saas平台活动定制渲染组件我们要将这个组件渲染在网页上,操作应该是这样的:当鼠标移动到产品服务时,将下拉框组件作为一个组件实例渲染在页面的合适位置。vue3中,渲染一个Vonde,核心逻辑如下:import{createVNode,h,render,VNode}from'vue'importcomponentfrom"./component.

事件冒泡为何会触发两次? 事件冒泡为何会触发两次? Feb 22, 2024 am 09:06 AM

事件冒泡为何会触发两次?事件冒泡(EventBubbling)是指在DOM中,当一个元素触发了某个事件(例如点击事件),该事件会从该元素开始向上冒泡至父元素,直到冒泡到最顶层的文档对象为止。事件冒泡是DOM事件模型的一部分,它允许开发者将事件监听绑定到父元素,从而在子元素触发事件时,可以通过冒泡机制来捕获并处理事件。然而,有时开发者会遇到事件冒泡触发两次的

Mpeppe(MPEPE)币:加密货币市场的新竞争者,吸引来自 Render(RNDR)和互联网计算机(ICP)的投资者 Mpeppe(MPEPE)币:加密货币市场的新竞争者,吸引来自 Render(RNDR)和互联网计算机(ICP)的投资者 Sep 03, 2024 pm 02:03 PM

加密货币的世界总是在不断变化,新的代币吸引了寻找下一个重大机会的经验丰富的投资者的注意力。

render是渲染的意思吗 render是渲染的意思吗 Feb 02, 2023 pm 02:52 PM

render是渲染的意思,是一种绘图术语;渲染是CG的最后一道工序,也是最终使图像符合的3D场景的阶段;渲染英文为Render,也有人会把它称为着色,但一般把Shade称为着色,把Render称为渲染。

为何事件冒泡机制会触发两次? 为何事件冒泡机制会触发两次? Feb 25, 2024 am 09:24 AM

为什么事件冒泡会连续发生两次?事件冒泡是web开发中一个重要的概念,它指的是当一个事件在嵌套的HTML元素中触发时,事件会从最内层的元素开始一直冒泡到最外层的元素。这个过程有时会引起困惑,其中一个常见问题就是事件冒泡会连续发生两次。为了更好的理解为什么事件冒泡会连续发生两次,我们先来看一段代码示例:

HMD Slate Tab 5G 泄露为中端平板电脑,搭载 Snapdragon 7s Gen 2、10.6 英寸显示屏和 Lumia 设计 HMD Slate Tab 5G 泄露为中端平板电脑,搭载 Snapdragon 7s Gen 2、10.6 英寸显示屏和 Lumia 设计 Jun 18, 2024 pm 05:46 PM

HMD Global 将于 7 月 10 日推出 Skyline,推出一款类似诺基亚 Lumia 920 风格的中端智能手机。根据泄密者 @smashx_60 的最新信息,Lumia 设计很快也将用于平板电脑,这将是 c

Render币值得长期持有吗?Render币值得投资吗? Render币值得长期持有吗?Render币值得投资吗? Mar 06, 2024 am 08:31 AM

Render币:值得长期持有的投资机会Render币是基于以太坊区块链的加密货币,专为支付去中心化渲染网络Render上的渲染服务而设计。其目标是应对传统渲染解决方案的高成本和低效率,为艺术家和创作者提供经济实惠且便捷的渲染选择。Render币的优势去中心化:Render币基于以太坊区块链,具有去中心化的特性,避免了中心化渲染服务商的单点故障和高昂费用。高效率:Render币利用分布式渲染技术,将渲染任务分配给全球各地的闲置GPU,大幅提高渲染效率。低成本:Render币通过消除中间商,降低了渲

DTX Exchange (DTX) – 在线交易的新时代 DTX Exchange (DTX) – 在线交易的新时代 Aug 12, 2024 am 12:24 AM

购买 Render (RNDR)、Mantle (MNT) 和 Sei (SEI) 等知名加密货币的人现在正在将资金投入 DTX Exchange (DTX)。

See all articles