分析: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中文网其他相关文章!

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

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

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

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

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

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

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

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

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