javascript - React 路由器渲染错误页面

标签 javascript reactjs

我正在开发一个网络应用程序,我是 react 路由器的新手。一切都很顺利,直到我发现自己需要渲染一个全新的页面,带有新的导航栏和所有内容。

这是我的 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。

希望我能很好地解释自己。 很高兴你能帮助我!!

最佳答案

您好,您可以尝试这样的操作,如果匹配,则首先渲染顶部的一个,如果不匹配,它将继续渲染应用程序的其余部分:)希望这是清楚的

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>
    )
}
}

关于javascript - React 路由器渲染错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53209199/

相关文章:

javascript -\0 ("\\0"在 C 风格的正则表达式中)是 C++ 正则表达式中的有效转义序列吗?

javascript - 无需元素即可工作的 jQuery 插件

javascript - 代码的执行顺序

javascript - 返回数字 x 的前 n 个倍数

javascript - 在 yarn 中安装所有未满足的依赖项

reactjs - 部署 Next.js 项目到 Heroku 失败

android - 应用react.gradle抛出错误

javascript - Material-UI 组件样式定制 - 将选择组件的颜色更改为白色

javascript - Material UI 抽屉中的按钮导航

javascript - 为什么有人想在 React js 中将一个函数变成一个类