【发布时间】:2021-07-02 01:00:21
【问题描述】:
我有一个 react 应用,使用 react-router v6 作为路由系统。我尝试了几种监听路由变化的方法,因为我有一个每次都可以运行的功能,但我无法让它工作。下面的代码示例,我认为这是使用 useLocation 挂钩的预期方式,运行到错误,“useLocation 只能在路由器的上下文中使用,但我相信 BrowserRouter 创建了一个路由器,它甚至显示在错误中消息,但我仍然无法使用它。可以在屏幕截图中看到错误。
function App() {
const location = useLocation()
React.useEffect(() => { console.log(location) }, [location])
return (
<Provider store={store}>
<ThemeProvider theme={theme}>
<CssBaseline />
<Main />
</ThemeProvider>
</Provider>
)
}
ReactDOM.render(<BrowserRouter><App /></BrowserRouter>, document.getElementById('app'));
错误:useLocation() 只能在路由器组件的上下文中使用。 App组件出现上述错误: 应用内 在路由器中(由 BrowserRouter 创建) 在浏览器路由器中
【问题讨论】:
-
您能否分享一下错误的实际含义(作为文本)?
-
在编辑中添加
-
你可以分享一个codepen或codesandbox的例子吗?
-
不知道行不行,之前没创建过codependent,不过这里codepen.io/szisziban/project/editor/ZBmbzd
-
codepen 示例没有抛出您看到的错误?
标签: javascript reactjs react-router react-router-dom