在React Router 4/5中,可以使用条件渲染来有条件地呈现包装组件。条件渲染是根据特定条件来决定是否渲染组件的一种技术。
下面是在React Router 4/5中有条件地呈现包装组件的步骤:
ConditionalWrapper
的组件。import React from 'react';
import { Route } from 'react-router-dom';
const ConditionalWrapper = ({ condition, wrapper, component: Component, ...rest }) => {
return (
<Route {...rest} render={props => (
condition ? (
React.createElement(wrapper, null, <Component {...props} />)
) : (
<Component {...props} />
)
)} />
);
};
export default ConditionalWrapper;
ConditionalWrapper
组件来包装需要有条件渲染的组件。import React from 'react';
import { BrowserRouter as Router, Switch } from 'react-router-dom';
import ConditionalWrapper from './ConditionalWrapper';
import Home from './Home';
import AdminHome from './AdminHome';
const App = () => {
const isAdmin = true; // 根据条件来决定是否渲染包装组件
return (
<Router>
<Switch>
<ConditionalWrapper
condition={isAdmin}
wrapper={AdminLayout} // 包装组件
component={AdminHome} // 子组件
path="/admin"
exact
/>
<ConditionalWrapper
condition={!isAdmin}
wrapper={DefaultLayout} // 包装组件
component={Home} // 子组件
path="/"
exact
/>
</Switch>
</Router>
);
};
export default App;
在上面的例子中,根据isAdmin
变量的值,决定是否渲染AdminHome
组件。如果isAdmin
为true
,则使用AdminLayout
组件来包装AdminHome
组件;如果isAdmin
为false
,则直接渲染Home
组件。
这样,根据条件有条件地呈现包装组件就完成了。
请注意,以上示例中的AdminLayout
和DefaultLayout
是自定义的包装组件,你可以根据自己的需求来创建和使用。此外,还可以根据具体情况来调整路由路径和其他属性。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云