在React中,你可以使用useEffect
钩子和window.location
对象来获取当前URL,并使用useState
钩子将其存储在组件的状态中。以下是一个简单的示例代码:
import React, { useState, useEffect } from 'react';
function App() {
const [url, setUrl] = useState('');
useEffect(() => {
// 获取当前URL
const currentUrl = window.location.href;
// 将URL设置到状态中
setUrl(currentUrl);
}, []); // 空依赖数组确保只在组件挂载时运行一次
return (
<div>
<h1>当前URL是:</h1>
<p>{url}</p>
</div>
);
}
export default App;
useEffect
的依赖数组不正确,导致useEffect
在不应该触发的时候被调用了。useEffect
的依赖数组包含了所有它依赖的状态或props。在上面的例子中,因为我们不需要任何依赖,所以使用了空数组。useLocation
钩子从react-router-dom
库中获取当前URL,并将其作为依赖项添加到useEffect
中。import React, { useState, useEffect } from 'react';
import { useLocation } from 'react-router-dom';
function App() {
const [url, setUrl] = useState('');
const location = useLocation();
useEffect(() => {
setUrl(location.href);
}, [location]); // 当location变化时,更新状态
return (
<div>
<h1>当前URL是:</h1>
<p>{url}</p>
</div>
);
}
export default App;
在这个改进的例子中,我们使用了useLocation
钩子来监听URL的变化,并且只在location
对象变化时更新状态。这样可以确保状态始终与当前URL保持同步。
领取专属 10元无门槛券
手把手带您无忧上云