首页 > 解决方案 > 我的组件在什么情况下会在 React-router 下重新加载,什么时候会触发这些 useEffect 函数?

问题描述

我正在尝试解决网站的一些问题,并意识到我并不真正了解一些 React 和 React-router 基础知识。我正在使用带有一些可选参数的 HashRouter 来服务我的页面:

<HashRouter>
    <Route path="/page/:param1?/:param2?/:param3?" component={props => <Component {...props} />} />
    ...
</HashRouter>

我尝试使用 BrowserRouter,但如果包含参数,它将不允许我直接导航到页面。HashRouter 可以,虽然我不知道为什么。

当我从https://www.mywebsite.com/#/pageto时https://www.mywebsite.com/#/page/1/2/3,组件是否完全重新加载?反转的时候是不是一样的情况?在组件内部,什么时候useEffect(() => {}, [])被调用?我一直在用它来代替 componentDidMount 但它似乎触发了多次,我不知道为什么。什么时候useEffect(() => {}, [window.location.href])被调用,它是检查我的参数变化的合适方法吗?会useEffect(() => {}, [JSON.stringify(props.match.params)])更好吗?

标签: reactjsreact-routeruse-effect

解决方案


推荐阅读