React Nested Router изменяет только URL-адрес, но не отображает страницу

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

По сути, я пишу веб-сайт, который может отображать список статей. На главной странице есть кнопка «Статьи». Как только мы щелкнем по нему, маршрутизатор заработает и перейдет на страницу «/ статьи», как показано в кодах ниже.

Файл A:

import React, { Component } from 'react';
import {BrowserRouter, Route, Link, Switch} from 'react-router-dom';

class A extends Component {
    constructor(props) {
        super(props);
    }
    render() {
        return (
            <BrowserRouter>
            <div>
                <div>
                    <button><Link to = "/articles"> Articles </Link></button>
                </div>
                <Switch>
                    <Route exact path = '/articles' render = {() => <B />}/>
                </Switch>
            </div>
            </BrowserRouter>
        );
    }
}

Список статей будет показан компонентом B. Я разработал, что компонент B будет иметь две ситуации. Во-первых, по умолчанию, когда мы нажимаем кнопку в компоненте A, отображается URL-адрес «/ article», а затем отображается список статей. Во-вторых, если мы щелкнем по любому заголовку статьи, URL-адрес будет изменен на «article / articleID», и компонент покажет детали этого articleID.

Файл B:

import React, {Component} from 'react';
import {BrowserRouter, Route, Link, Switch} from 'react-router-dom';

class B extends Component {
    constructor(props) {
        super(props);
    }

    render() {
        return (
            <BrowserRouter>
                <div>
                        <Switch>
                            <Route exact path = "/articles" render = {(props) => <Articles {...props} />}/>
                            <Route path = "/articles/:articleId" render = {() => <ArticleDetail />}/>
                        </Switch>
                </div>
            </BrowserRouter>
        );
    }
}

Теперь моя проблема в том, что когда на странице с подробностями статьи (когда URL-адрес страницы - «/ article / articleId»), я могу нажать кнопку «Статьи» в компоненте A, и URL-адрес будет изменен на «/ articles», но страница не будет отображаться, а это значит, что я все равно буду на странице сведений о статье, вместо того, чтобы вернуться на страницу со списком статей.

Если мое описание вас смущает, спросите меня! Спасибо за помощь!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
206
2

Ответы 2

Я думаю, вам нужно использовать компонент переключателя только в вашем основном компоненте приложения, таком как «A», и использовать ключевое слово «точное» на каждом «маршруте», проверьте реакцию-маршрутизатор v4 для получения дополнительной информации: https://reacttraining.com/react-router/web/api/Switch

Эй, я не знаю, осталась ли у тебя эта проблема, но попробуй сделать <Route exact path = '/articles' render = {() => <B />}/> не совсем точный.

У меня была такая же проблема, и я считаю, что когда вы переходите к /articles/:articleId, путь больше не соответствует /articles, поэтому ваш компонент больше не отображается.

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