Reactjs 更改路径名时重新渲染组件

Reactjs 更改路径名时重新渲染组件,reactjs,react-router,Reactjs,React Router,伙计们,我有点小问题 我的组件在更改路径名时不会重新加载我尝试了所有操作,但仍然无法在此处工作是useEffect func useEffect(() => { var user=window.location.pathname.replace('/user/',''); axios.defaults.baseURL = 'http://rating.test'; axios.get('/api/getuser',{headers: { Authorization: `B

伙计们,我有点小问题 我的组件在更改路径名时不会重新加载我尝试了所有操作,但仍然无法在此处工作是useEffect func

useEffect(() => {
    var user=window.location.pathname.replace('/user/','');
    axios.defaults.baseURL = 'http://rating.test';
 axios.get('/api/getuser',{headers: { Authorization: `Bearer ${localStorage.getItem('userToken')}` },params:{username: user,}}).then(res=>{
      setposts(res.data.posts);
      setuser({id:res.data.id,username:res.data.username});
  })


 },[window.location.pathname])
顺便说一句,我正在使用react路由器

编辑:我的路由器

    <Router>
   <MyHeader />
<Switch>
<Route exact path="/" component={Login}/>
<Route path="/main" >
  <Main/>
</Route>
<Route path="/myposts" >
  <Profile/>
</Route>
<Route path="/user/:id" >
  <User />
</Route>


您不需要放置
window.location.pathname
,因为当url更改时,react将自动从匹配的路由重新加载所有组件。因此将调用
useffect
。我想您的组件结构有问题。@HMR感谢useparams不知道,现在我将其设置为状态,但问题是即使url更改,状态也不会更新,我如何更新它?@HMR不,它不会在第二时间被调用time@HMR不,它不是,它总是保持在第一状态,我把窗口移走了。location@chenten你的问题是路由器,如果路由更改后组件根本没有呈现,并且该组件中有useParams。您不需要放置
window.location.pathname
,因为当url更改时,react将自动从匹配的路由重新呈现所有组件。因此将调用
useffect
。我想您的组件结构有问题。@HMR感谢useparams不知道,现在我将其设置为状态,但问题是即使url更改,状态也不会更新,我如何更新它?@HMR不,它不会在第二时间被调用time@HMR不,它不是,它总是保持在第一状态,我把窗口移走了。location@chenten如果在路由更改后组件根本不渲染,并且在该组件中具有useParams,则问题在于路由器。