React router отображает неправильную страницу

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

это мой app.js

class App extends Component {
render() {
 return (
  <BrowserRouter> 
  <div className='App'>
  <Layout>
  <Header />
  <NavigationB />
  <Search /> 
    <Switch> {/* to swtich to the desired path. Nest all route here */}
    <Route path='/' component = {Home} exact />
    <Route path='/login' component = {Login} />
    <Route path='/register-choice' component = {RegisterButton} />
    <Route path='/register-patient' component = {RegisterPatient} />
    <Route path='/register-professional' component = {RegisterProf} />
    <Route path='/profesional-dashboard' component = {ProfessionalDashboard} />
    </Switch>
    </Layout>
  <Footer />
  </div>
  </BrowserRouter>
);
}
}

Итак, я хотел перейти в / professional-dashboard, но без рендеринга всех вышеперечисленных компонентов, а также заголовка, поиска и т. д.

Я попытался зайти в свой файл index.js и настроить его так

ReactDOM.render(

<BrowserRouter>
<Switch> {/* to swtich to the desired path. Nest all route here */}
<Route path='/' component = {App} exact />
<Route path='/professional-dashboard' component= 
{ProfessionalDashboard} />
</Switch>
</BrowserRouter>, 

document.getElementById('root'));

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

В конце моего файла Register.js вы найдете

const WrappedRegistrationForm = Form.create()(RegisterProf);

ReactDOM.render(
<BrowserRouter>
<div>
<WrappedRegistrationForm />

</div>
</BrowserRouter>

, document.getElementById('root'));

export default WrappedRegistrationForm;

Я использую Ant Design, поэтому форма отображает WrappedRegistrationForm. Сначала это не работало, затем я обернул его вокруг BrowserRouter, я больше не получаю ошибку, но теперь, когда я нажимаю кнопку регистрации, он переводит меня в / professional-dashboard, но загружает app.js, а не ProfessionalDashboard.js Забавно то, что если я обновляю страницу, она загружает ProfessionalDashboard.js как обычно.

Надеюсь, я хорошо объясняюсь. Рад, если вы можете мне помочь !!

Поведение ключевого слова "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
333
3

Ответы 3

Попробуйте включить "точное" перед компонентом в свой маршрут или "точное" перед "Кому" в вашей ссылке.

Привет, мог бы попробовать что-то вроде этого, сначала рендеринг верхнего, если он совпадает, если нет, он продолжит рендеринг остальной части приложения :) надеюсь, что это ясно

class App extends Component {
 render() {
  return (
   <BrowserRouter> 
    <Switch> 
     <Route exact path='/profesional-dashboard' component = {ProfessionalDashboard} />
     <StandarRoute path='/' component = {MainPage} />
    <Switch /> 
</BrowserRouter>
);
}
}

class MainPage extends Component {
render(){
    return(
      <div className='App'>
          <Layout>
          <Header />
          <NavigationB />
          <Search /> 
            <Switch> {
                <Route path='/' component = {Home} exact />
                <Route path='/login' component = {Login} />
                <Route path='/register-choice' component = {RegisterButton} />
                <Route path='/register-patient' component = {RegisterPatient} />
                <Route path='/register-professional' component = {RegisterProf} />
            </Switch>
           </Layout>
           <Footer />
       </div>
    )
}
}

Пытаться,

<Route exact path = "/register" render = {() => ( <Redirect to = "/dashboard"/>)

Кстати, почему вы делаете два рендеринга с помощью reactDOM? Это может быть причиной проблемы. Достаточно просто экспортировать его и поместить в компонент маршрута.

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