Reactjs MobX+;React路由器4+@当路由更改时,withRouter始终重新渲染
我使用MobX@observer和@withRouter(react-router-v4)这样的包装页面组件Reactjs MobX+;React路由器4+@当路由更改时,withRouter始终重新渲染,reactjs,mobx,react-router-v4,mobx-react,react-router-dom,Reactjs,Mobx,React Router V4,Mobx React,React Router Dom,我使用MobX@observer和@withRouter(react-router-v4)这样的包装页面组件 @withRouter @inject('stores') @observer class Page extends Component { render() { return ( <div> <NavBar /> <Header title={this.props.stores.UIStore.tit
@withRouter
@inject('stores')
@observer
class Page extends Component {
render() {
return (
<div>
<NavBar />
<Header title={this.props.stores.UIStore.title} />
<Switch>
<Route exact path="/" component={HomePage} />
<Route exact path="/about" component={AboutPage} />
<Route component={NotFound} />
</Switch>
</div>
)
}
@withRouter
@注入('存储')
@观察者
类页面扩展组件{
render(){
返回(
)
}
问题当路由位置更改时,导航栏和标题组件始终使用相同的道具重新渲染(无任何状态更新)。当路由更改时,react perf显示许多浪费的渲染(无道具/状态更新) 导航栏包括链接和一些MobX状态(仅使用@observer+@inject包装导航栏)
Header只是一个无状态组件 页面组件需要@withRouter导致@observer(MobX)中断反应路由器()
如何防止路由位置更改导致导航栏和标题重新渲染?仅允许在mobx状态更新时重新渲染。我知道这很旧,但这就是我在项目中解决相同问题的方法:
我是否遗漏了什么,或者这是一种预期行为?在更改路径时,您的
页面
组件将重新呈现,其所有子组件也将重新呈现谢谢您Nikita!这为我节省了很多时间。遵循了第一步和第二步,解决了我面临的问题。不过,我还没有检查第三步。