使用connected-react-router每次路由更改时都会更改的“关键字”是什么?

时间:2018-11-10 09:44:18

标签: redux react-router-v4 connected-react-router

触发用于导航到路线的操作时,该操作会触发一个新状态,其中router.location.pathname会根据浏览器的history进行更改。

另一个属性也发生了变化:router.location.key更改为新的随机字符串。

The diff between two states, showing how key changes alongside a pathname.

即使路径名本身没有改变(单击页面本身上指向页面的链接),key仍会更新。

The diff between two states, showing how only the key changes.

key属性的用途是什么?在哪种情况下,我希望自己的状态有一个随机生成的key,它会根据动作分派进行更新?为什么它不是简单增加的数字?

1 个答案:

答案 0 :(得分:1)

connected-react-router仅存储react-router中的位置对象,然后使用history包创建位置对象。在history的自述文件中,描述了key属性:

  

位置可能还具有以下属性:

     

location.key-代表此位置的唯一字符串(受以下版本支持   createBrowserHistory和createMemoryHistory)

它在内部使用(例如,在https://github.com/ReactTraining/history/blob/master/modules/createBrowserHistory.js中用于查找当前历史记录堆栈中的位置),应将其视为react-router的实现细节。我怀疑使用随机密钥而不是递增序列号只是实现唯一ID的最简单方法(您不必存储当前序列号)。