Как использовать маршрутизатор для переключения между компонентами с парой ключ-значение в react

#javascript #reactjs #react-router

#javascript #reactjs #react-маршрутизатор

Вопрос:

Я просто застрял на этой концепции маршрутизатора. Я довольно новичок в react. ПОЭТОМУ я думаю, что у нас также есть лучший способ сделать это. Поправьте меня, если я делаю это неправильно или если у нас есть лучший вариант.

Это мой App.js

 import React from 'react';
import './App.css';
import Header from './Header';
import Profile from './Profile';
import {BrowserRouter as Router, Switch, Route} from "react-router-dom";
import PullRequests from './PullRequests';
import Overview from "./Overview";
import Repo from './Repo';

function App() {
  return (

    <Router>
    <div className="App">
      <Header />

      <Switch>

      <Route path="/">
        <Profile template= {<Overview/>} />
      </Route>

      <Route path="/tagname=Repo">
        <Profile template= {<Repo/>} />
      </Route>

      <Route path="/Pullrequests">
        <PullRequests />
      </Route>

      </Switch>
      
    </div>
    </Router>

  );
}

export default App;

  

Это мой profile.js

 import React from 'react'
import "./Profile.css"
import { Avatar} from '@material-ui/core';
import PeopleAltIcon from '@material-ui/icons/PeopleAlt';
import StarBorderIcon from '@material-ui/icons/StarBorder';
import LocationOnIcon from '@material-ui/icons/LocationOn';
import Underlinenav from './Underlinenav';


function Profile({template}) {


    return (
        <div className="profile">

                <div className="profile__left">

                    <Avatar src="https://avatars0.githubusercontent.com/u/68982304?s=460amp;u=6b37f00eb36173e0f5f5bc04db9e63066d408d80amp;v=4" className="profile__avatar"/>

                    <div className="profile__name">
                    <span><h4>Shivansh Sharma</h4></span>
                    <span><p>shivkaansh</p></span>
                    </div>
                
                    <button>Edit profile</button>

                    <div className="profile_leftFollow">

                        <div className="profile__options">
                        <span>< PeopleAltIcon fontSize="small" /></span>
                        <span>1 follower</span>
                        </div>

                        <p>4 following</p>
                        
                        <div className="profile__options">
                        <span>< StarBorderIcon fontSize="small"/></span>
                        <span>3</span>
                        </div>

                    </div>

                    <div className="profile_leftLoc">
                        <span>< LocationOnIcon fontSize="small" /></span>
                        <span>India</span>      
                    </div>

                </div>
                <div className="profile__right">

                <div className="profile__rightupper">
                <Underlinenav/>

                </div> 

                {template}

                </div>
            </div>
    )
}

export default Profile

  

Я использовал шаблон с именем prop для маршрутизации компонента в profile.js для переключения между компонентами внутри корпуса. Но я думаю, что это работает не так, как ожидалось,

Я хочу, чтобы компонент Overview.js on path http://localhost:3000/ и Repo.js on http://localhost:3000/tagname=Repo

Ответ №1:

Используйте атрибут render и функцию промежуточного программного обеспечения для возврата правильного компонента

 <Route 
  path="/" 
  render={({location}) => {
      const template = checkYourRoute(location) ? Overview : Repo;
      return <Profile template={template} />
    }
  }
>