使用redux连接路由器组件后,react路由器DOM不会重新渲染的原因是因为redux的连接器(connect)会将路由器组件包裹在一个高阶组件中,这个高阶组件会对路由器组件进行包装,使其成为一个受控组件。受控组件的渲染是由redux的状态管理来控制的,而不是由路由器的状态来控制。
在redux中,路由器组件被视为一个普通的UI组件,它的渲染是由redux的store中的状态来决定的。当redux的状态发生变化时,redux会通知连接器组件进行重新渲染,而不会触发路由器组件的重新渲染。
这种设计可以提高应用程序的性能和效率,因为只有当redux的状态发生变化时,才会重新渲染与状态相关的组件,而不是整个应用程序。
然而,如果希望在redux状态变化时也重新渲染路由器组件,可以使用react-redux提供的withRouter高阶组件来包装路由器组件。withRouter会将路由器组件与路由器的状态进行绑定,当redux状态变化时,会触发路由器组件的重新渲染。
总结起来,使用redux连接路由器组件后,react路由器DOM不会重新渲染是因为redux的连接器将路由器组件包装在一个受控组件中,受控组件的渲染由redux的状态管理来控制。如果需要在redux状态变化时重新渲染路由器组件,可以使用react-redux提供的withRouter高阶组件来包装路由器组件。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云