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()。记住在路由器的子组件中调用它