location对象与useLocation()的使用

location对象与useLocation()的使用

什么是location对象?

​ Location 对象包含有关当前 URL 的信息。

​ Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问。

​ Location 对象存储在 Window 对象的 Location 属性中,表示那个窗口中当前显示的文档的 Web 地址。相关的属性如下图所示:

属性描述
hash设置或返回从井号 (#) 开始的 URL(锚)。
host设置或返回主机名和当前 URL 的端口号。
hostname设置或返回当前 URL 的主机名。
href设置或返回完整的 URL。
pathname设置或返回当前 URL 的路径部分。
port设置或返回当前 URL 的端口号。
protocol设置或返回当前 URL 的协议。
search设置或返回从问号 (?) 开始的 URL(查询部分)。

useLocation的使用

1. 使用场景:

​ 比如说我在当前页面想要跳转到其他页面,但是其他页面需要当前页面跳转来后的数据,这时候我们可以使用useNavigate()跳转并传值和useLocation接受传来的值。

2. 具体操作:

​ 在当前页面使用useNavigate的时候,在第二个参数将需要被发送的数据带上:

import { useNavigate } from "react-router-dom";

let navigate = useNavigate();

navigate(navigateUrl, { state: data });

​ 在被跳转的页面用useLocation获取该参数的值:我这边使用了lodash库的_get()方法,直接获取到了属性是state的值。

import { useNavigate } from 'react-router-dom';

const location = useLocation();

const state = _.get(location, ['state']);

image-20220509153355900

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
`useLocation` 是 React Router 提供的一个 Hook,用于在函数组件中获取当前 URL 的 `location` 对象。`location` 对象包含了当前 URL 的信息,包括路径、查询参数、哈希等等。 在使用 `useLocation` 前,需要先在组件中导入它: ```jsx import { useLocation } from 'react-router-dom'; ``` 然后在组件中调用 `useLocation`: ```jsx function MyComponent() { const location = useLocation(); // ... } ``` `useLocation` 返回一个 `location` 对象,该对象包含以下属性: - `pathname`:当前 URL 的路径部分,例如 `/home/foo`。 - `search`:当前 URL 的查询参数部分,例如 `?name=foo&age=20`。 - `hash`:当前 URL 的哈希部分,例如 `#section1`。 - `state`:在使用 `history.push` 或 `history.replace` 方法时传递的状态对象。 你可以在组件中使用 `location` 对象中的属性来获取当前 URL 的信息,例如: ```jsx function MyComponent() { const location = useLocation(); return ( <div> <p>当前路径:{location.pathname}</p> <p>查询参数:{location.search}</p> <p>哈希值:{location.hash}</p> </div> ); } ``` `useLocation` 的一个常见用途是在路由组件中根据当前 URL 的路径或查询参数展示不同的内容。例如,你可以使用 `switch` 和 `Route` 组件来根据 URL 匹配路由: ```jsx function MyRouter() { return ( <Switch> <Route path="/home" component={Home} /> <Route path="/about" component={About} /> <Route path="/contact" component={Contact} /> </Switch> ); } ``` 在这个例子中,根据 URL 的路径,React Router 会匹配对应的路由组件并渲染它们。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值