为了账号安全,请及时绑定邮箱和手机立即绑定

React 有条件地渲染特定路由中的组件

React 有条件地渲染特定路由中的组件

湖上湖 2023-07-14 16:31:01
这是我的Index.jsReactDOM.render(   <React.StrictMode>        <Provider store={store}>            <Router>               <App className="app-main" />            </Router>         </Provider>    </React.StrictMode>,  document.getElementById('root'));这是App.jsx<Switch>     appRoutes.map(route =>          <Route path={route.path} component={route.component} key={route.key}/>     )}</Switch><BottomNav />我想在特定路线中渲染BottomNav组件,其中它们也是一些子路线。我在底部导航中使用了withRouter,但它的匹配只是一个“/”,我只能访问位置。位置对我来说还不够,因为正如我所说,这些路线中有一些子路线。例如,在个人资料路线中,我有活动和朋友。我想在个人资料/朋友中渲染 BottomNav,但不在个人资料/活动中渲染 BottomNav,我怎样才能实现这一点。我的解决方案是在 redux 中设置当前路由路径并将其传递到底部导航,并检查它是否在我渲染底部导航的有效路由中,但我无法在不同视图中编写和重复一个函数,直到它们安装时更新 redux 中的当前路由。我忘了说我是 React 新手,请温柔一点并详细解释一下 tnx :)
查看完整描述

1 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

我没有测试过,只是从我的脑海中提出来。这个想法是您创建一个应该显示 BottomNav 的路线图。否则,只需返回 null。


import {withRouter} from 'react-router-dom'


const ROUTES_WITH_BOTTOM_NAV = {

   '/home': true,

   '/profile/friends': true

}


const BottomNav = (props) => {

   const currentPage = props.location.pathname;

   if (!ROUTES_WITH_BOTTOM_NAV[currentPage]) return null;


   return (...yourBottomNavJsx)

}


export const withRouter(BottomNav)

让我知道这是否有帮助。


查看完整回答
反对 回复 2023-07-14
  • 1 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信