React Router в отдельных файлах

Я пытаюсь добавить маршруты в свой проект реагирования. У меня есть три отдельных компонента:

Окно.js

import React, { Component } from 'react';
import SideBar from "../SideBar/SideBar";
import MainBody from "../MainBody/MainBody";
import  { BrowserRouter as Router} from "react-router-dom";

class Window extends Component{
    render() {
        return (
        <div>
        <Router>
                <SideBar />
                <MainBody />
        </Router>
        </div>
        );
    }
}

export default Window

SideBar.js

import React, { Component } from 'react';
import PropTypes from "prop-types";
import  { BrowserRouter as Link} from "react-router-dom";

class SideBar extends Component {
     render() {
         return(

            <Link to = "/">Home</Link>
            <Link to = "/about">About</Link>
         );
     }
}

export default SideBar;

MainBody.js

import React, { Component } from 'react';
import Home from "./Home/Home";
import About from "./About/About";
import  { BrowserRouter as Route} from "react-router-dom";

class MainBody extends component {
     render() {
         return(
            <div>
            <Route exact path = "/" component = {Home}>
            <Route path = "/about" component = {About}>
            </div>
         );
     }
}

export default MainBody;

Таким образом, в основном, когда я нажимаю одну из моих ссылок в боковой панели, я хочу перейти к этой ссылке в моем основном теле (дома и о программе просто отображают свои заголовки). Однако, когда я запускаю это, мои компоненты Window, MainBody и SideBar работают, но мои компоненты Home и About не отображаются. Я правильно импортировал компоненты маршрутизатора в каждый файл компонента. Если я помещу маршруты из MainBody в компонент Window, они отобразятся (хотя не уверен, что ссылки маршрутизатора работают с ним). Любые предложения будут полезны!

Не могли бы вы отредактировать примеры кода, чтобы сообщить нам, что это за файл. Добавьте экспорт и импорт. Можете связать коды и ящик с примером того, что не работает.

Pavel Kratochvil 07.04.2019 22:39

Привет, я обновил фрагменты кода, чтобы включить имена файлов, экспорт и импорт!

Sean 08.04.2019 01:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
2
2 691
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В этих фрагментах есть несколько опечаток, не знаю, было ли это сделано при переписывании или у вас есть это в вашей кодовой базе, но будьте осторожны с ними (компонент вместо компонента, неправильно написанная функция рендеринга с возвратом нескольких элементов и т. д.).

import  { BrowserRouter as Link} from "react-router-dom";

Этот импорт также неверен. Вы должны импортировать ссылку, а не что-то вроде ссылки. Вы только переименовываете import BrowserRouter в Link.

import  { Link } from "react-router-dom";

И то же самое для маршрута.

Вот пример КодSanbox. Дайте мне знать, если это то, что вы хотели.

Другие вопросы по теме