When an action for navigating to a route is triggered, an action triggers a new state where the router.location.pathname
changes according to the browser's history
.
Another property changes as well: router.location.key
, to a new random string.
Even when the pathname itself doesn't change (clicking on a link to a page from the page itself), the key
still updates.
What's the purpose of the key
property? In which situations would I want my own state to have a randomly generated key
which updates on very action dispatch? Why is it not a number which simply increments?
connected-react-router
simply stores the location object fromreact-router
which in turn creates the location object using the history package. In the readme ofhistory
thekey
property is described:It is used internally (e.g. in https://github.com/ReactTraining/history/blob/master/modules/createBrowserHistory.js to find locations in the current history stack) and should be treated as an implementation detail of
react-router
. I suspect a random key instead of a incrementing sequence number was simply the easiest way to implement unique ids (you don't have to store the current sequence number).