我正在升级react路由器到react路由器v6。在最新版本中withRouter
不再被支持。我实现了这个 Package 器作为替换。
export const withRouter = Component => {
const Wrapper = props => {
const navigate = useNavigate();
return <Component navigate={navigate} {...props} />;
};
return Wrapper;
};
我是这样实现的
export default withRouter(
connect(
mapStateToProps,
mapDispatchToProps
)(Layout)
);
基本上, Package 器与应用程序中的原始withRouter位于同一位置。
目前我收到错误
Uncaught Error: [Wrapper] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>
我用<Route navigate={navigate} {...props}/>
交换了<Component navigate={navigate} {...props}/>
,但是我仍然得到同样的错误。谢谢!
1条答案
按热度按时间5n0oy7gb1#
Wrapper
是返回的组件,您似乎试图将其呈现为Routes
组件中的路由组件,但正如错误所指出的,这是一个不变式违规。给定:
您似乎试图在
Routes
组件中直接呈现此组件,类似于:但这是无效的。在本例中,
DecoratedLayout
组件应呈现为 Package 组件(* 呈现children
prop )或布局路线( 呈现Outlet
组件 *)。作为 Package 组件:
作为布局布线: