Правильно реагирует на маршруты боковой панели маршрутизатора, но компонент не отображается в верхнем меню. - PullRequest
0 голосов
/ 10 апреля 2020

Я разработал панель управления в React с боковой панелью и верхним меню. когда вы нажимаете на любые ссылки на боковой панели, компонент должен отображаться в верхнем меню. Но даже несмотря на то, что ссылки маршрутизатора работают правильно (они меняют URL и показывают отдельный компонент, когда я загружаю ссылку маршрутизатора отдельно), они ничего не показывают в верхнем меню и рядом с боковой панелью, когда я нажимаю на ссылки боковой панели. , в чем проблема?

Редактировать: ссылка на github проекта, на самом деле это очень легкий проект: https://github.com/LaMentaAzul/Test

Боковая панель. js

import{ BrowserRouter,Route, Link } from 'react-router-dom'
import {routes} from './../../routes.js'
import CreateJob from './../../Views/Forms/CreateJob.js'
import BasicInfo from './../../Views/Contents/BasicInfo.js'
import Dashboard from './../../Views/Contents/Dashboard.js'
....

class Sidebar extends Component {

    state = {
      navActive : '0'
    }

  render () {
    return (
      <BrowserRouter>
      <ContainerVertical style={{ backgroundColor: '#2d2e2e', height: '100vh', float:'right'}} >
      <ContainerHorizontal >
      <NavPanel dark >
        <NavTitle style={{ fontFamily: 'IranSans', textAlign: 'Center' }}>
       لوگو اینجا قرار بگیرد
        </NavTitle>
        <NavSection>
          <NavSectionTitle />
          <NavSectionTitle />  

          <NavLink  key='1' style={linkStyles.base} rightEl={<FiMonitor style={linkStyles.Icon} />} className={this.state.navActive === '1' ? 'active' :' ' }
          onClick={() => this.setState({ navActive:'1' })} style={this.state.navActive !== '1' ? {fontFamily:'IranSans'} : {...linkStyles.base, borderStyle:'solid',
          borderWidth:'0px 5px 0px 0px',
          borderColor:'#50d48b'
          }
          } 
          >
          <Link Component={Dashboard} style={{color:'lightblue'}} to='/dashboard'>داشبورد</Link>          
          </NavLink>  

            ........

        {routes.map((route, index) => (
          <Route
            key={index}
            path={route.path}
            exact={route.exact}
            component={route.main}
          />
        ))}

      </NavPanel>
      </ContainerHorizontal>
      </ContainerVertical>
      </BrowserRouter>
    )
  }
}

export default Sidebar

маршруты. js

import React from 'react'

export const routes = [
  {
    path: '/dashboard',
    exact: true
  },
  {
    path: '/createjob',
    exact: true
  }
....
]

export default routes

HRPanel. js

import SideBar from './../../Components/SideBar/SideBar'
import NavBar from './../Navigation Bar/NavBar.js'

class HRPanel extends Component {
  render () {
    return (
      <div id='App'>
        <SideBar />
        <NavBar />
      </div>
    )
  }
}

export default HRPanel

Панель инструментов. js (пример компонента одной из ссылок на боковой панели, которую необходимо загрузить под верхнюю панель)

class Dashboard extends Component {
  render () {
    return (
      <ContainerVertical>
        <ContainerHorizontal>
          <ScrollArea>
            <WidgetContainer style={{
              background: 'var(--bg-base)',
              border: '1px solid var(--border-color-base)',
              height: '400px',
              width: '100px',
              position: 'relative',
              top: '500px'
            }}
            >
              <Widget padding>
                <h2>
                   Title
                </h2>
              </Widget>
            </WidgetContainer>
          </ScrollArea>
        </ContainerHorizontal>
      </ContainerVertical>
    )
  }
}

export default Dashboard

Приложение. js

.....

import Insurance from './Views/Contents/Insurance.js'
import Jobs from './Views/Contents/Jobs.js'
import Management from './Views/Contents/Management.js'
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'

function App () {
  return (
    <Router>
      <Switch>
        <Route exact path='/' component={Login} />
        <Route exact path='/hrpanel' component={HRPanel} />
        <Route exact path='/createjob' component={CreateJob} />
        <Route exact path='/basicinfo' component={BasicInfo} />
        <Route exact path='/dashboard' component={Dashboard} />
        <Route exact path='/education' component={Education} />
        <Route exact path='/feedback' component={Feedback} />
        <Route exact path='/finance' component={Finance} />
        <Route exact path='/insurance' component={Insurance} />
        <Route exact path='/jobs' component={Jobs} />
        <Route exact path='/management' component={Management} />
      </Switch>
    </Router>
    // <Login> </Login>
    // <HRPanel> </HRPanel>
  )
}
export default App

в чем проблема?

1 Ответ

1 голос
/ 10 апреля 2020

Здесь обновляется Sidebar.js

   import{ BrowserRouter,Route, Link } from 'react-router-dom'
    import {routes} from './../../routes.js'
    import CreateJob from './../../Views/Forms/CreateJob.js'
    import BasicInfo from './../../Views/Contents/BasicInfo.js'
    import Dashboard from './../../Views/Contents/Dashboard.js'

        class Sidebar extends Component {

            state = {
              navActive : '0'
            }

          render () {
            return (
              <BrowserRouter>
              <ContainerVertical style={{ backgroundColor: '#2d2e2e', height: '100vh', float:'right'}} >
              <ContainerHorizontal >
              <NavPanel dark >
                <NavTitle style={{ fontFamily: 'IranSans', textAlign: 'Center' }}>
               لوگو اینجا قرار بگیرد
                </NavTitle>
                <NavSection>
                  <NavSectionTitle />
                  <NavSectionTitle />  

                  <NavLink  key='1' style={linkStyles.base} rightEl={<FiMonitor style={linkStyles.Icon} />} className={this.state.navActive === '1' ? 'active' :' ' }
                  onClick={() => this.setState({ navActive:'1' })} style={this.state.navActive !== '1' ? {fontFamily:'IranSans'} : {...linkStyles.base, borderStyle:'solid',
                  borderWidth:'0px 5px 0px 0px',
                  borderColor:'#50d48b'
                  }
                  }
href="/dashboard" 
                  >
                 داشبورد       
                  </NavLink>  

                    ........

                {routes.map((route, index) => (
                  <Route
                    key={index}
                    path={route.path}
                    exact={route.exact}
                    component={route.main}
                  />
                ))}

              </NavPanel>
              </ContainerHorizontal>
              </ContainerVertical>
              </BrowserRouter>
            )
          }
        }

        export default Sidebar

NavLink и Link являются тегами привязки, поэтому они не должны быть вложенными.

И вы должны использовать один и тот же маршрутизатор в приложении. js и боковая панель. js

Например, ваш проект теперь имеет разные маршруты

<Route exact path='/jobs' component={Jobs} /> - Приложение. js

<Link Component={Jobs} style={{color:'lightblue'}} to='/ُjobs'>مشاهده فرصتهای شغلی</Link> - Боковая панель. js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...