Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React路由器4不在链路上更新视图,但在刷新时更新_Reactjs_Url_React Router_React Router V4 - Fatal编程技术网

Reactjs React路由器4不在链路上更新视图,但在刷新时更新

Reactjs React路由器4不在链路上更新视图,但在刷新时更新,reactjs,url,react-router,react-router-v4,Reactjs,Url,React Router,React Router V4,我使用以下简单的导航代码 <Router> <Switch> <Route exact path='/dashboard' component={Dashboard} /> <Route path='/dashboard/accounts' component={AccountPage} /> </Switch> </Router> <NavLink exact to={'/dashboard

我使用以下简单的导航代码

<Router>
  <Switch>
    <Route exact path='/dashboard' component={Dashboard} />
    <Route path='/dashboard/accounts' component={AccountPage} />
  </Switch>
</Router>

<NavLink exact to={'/dashboard'}
         disabled={this.props.item.disabled}
         activeClassName='active'>

<NavLink exact to={'/dashboard/accounts'}
         disabled={this.props.item.disabled}
         activeClassName='active'>


URL会更改,但视图不会更改。但是,当我刷新页面或手动转到该URL时,它确实会发生更改。

这是因为
react redux
connect
方法实现了
shouldComponentUpdate
,这将导致组件在道具未更改时呈现。这与react路由器4冲突

要避免这种情况,可以将
{pure:false}
传递到
connect
,如中所述

另一种方法是将
与路由器一起使用
HOC或像道具一样传递
位置。

您也可以使用:

import { withRouter } from 'react-router-dom';
然后在导出默认值上,执行以下操作:

export default withRouter(connect(mapStateToProps, {})(Layout));

因为当您进行导出连接时,您需要告知该组件将使用路由器。

我遇到了这个问题。我通过将属性键添加到组件开关来解决它,值为位置路径名和位置搜索。

我的导航链接位于无状态组件(或哑组件)和容器中,用于控制导航栏的折叠状态


将navbar容器从
PureComponent
切换到
Component
后,它为我解决了问题。

您的组件react redux是否连接了组件?是的……。然后我想您可能遇到了与我在回答中描述的相同的问题,我们可以使用redux,那么我们如何应用此方法?我有相同的问题视图的问题不是udpate,但是我们没有使用redux,那么问题是什么,或者我们如何在我们的代码中应用您的解决方案?这对我很有效!现在,当我手动更改url时,它就可以工作了。示例:
loc来自useLocation()。记住在路由器的子组件中调用它