React路由,如何理解useLocation钩子?获取当前地址栏URL
发布于 作者:苏南大叔 来源:程序如此灵动~

“react
系列的钩子函数,命名都是以use
字符串开头的”,这是一个重要信息。本文描述react router
里面的useLocation
钩子。它有什么用呢?如何使用呢?这就是本文要描述的内容。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验。本文测试环境:nodejs@20.18.0
,create-react-app@5.0.1
,react-router-dom@6.27.0
,react@18.3.1
。
官方文档
useLocation
是来自react-router-dom
的,并不是来自react-dom
。它的官方文档是:
官方文字:This hook returns the current location object. This can be useful if you'd like to perform some side effect whenever the current location changes.
当前的locatioin
变化的时候,useLocation()
的返回值就会发生变化。
最简单测试代码
这里基于create-react-app
的默认cra
模版,展开叙述。
然后构造一个最简单的测试代码。参考:index.js
:
App.js
:

必须运行在路由标签内部
这个useLocation()
必须运行在路由标签包裹的内部代码里面,否则会得到如下错误提示信息:

useLocation 返回值
其返回值是个location
对象,和常见的document.location
是略有不同的。根据官方文档,其返回值对象的主要属性有:
名称 | 值 |
---|---|
location.hash | The hash of the current URL. |
location.key | The unique key of this location. |
location.pathname | The path of the current URL. |
location.search | The query string of the current URL. |
location.state | The state value of the location created by <Link state> or navigate . |

结语
本文主要总结了react router
的useLocatioin()
钩子的最简单用法。更多苏南大叔的react
经验文章,请点击:


