使用dva routerRedux.push跳转页面携带参数时请求两次问题

发现问题

页面使用routerRedux.push([path])进行跳转,部分页面跨页传参也是使用这种方式,然后发现了一个很奇怪的现象,部分页面接受参数后,执行两次subscriptions,所以导致两次请求。在dva的issues里面看到了2016年有人提过这个问题,并被列为bug解决了。很奇怪在这为什么复现了。

寻找原因

想知道从页面加载到请求结束到底发生了什么,这就要借助工具了----Redux devTools,是用它可以记录整个过程并进行回放,在回放里发现了原因:

图中标记的就是进入页面后发出的两次请求,对比后发现,两次的pathName有所不同,第一次里面有汉字,而第二个里面汉字被编码了。是不是因为汉字的原因呢?

验证

将URL参数里面的汉字在push前使用encodeURL转码,果然,页面只有一次请求了。

查找资料

阮一峰的URL编码

只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*’(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。

解决问题

将所有涉及汉字的参数使用encodeURL转码,在使用时使用decodeURL转换回来。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值