【问题标题】:React route from another file is rendered on every path来自另一个文件的 React 路由在每个路径上呈现
【发布时间】:2020-09-17 03:13:27
【问题描述】:

我正在尝试将路由分隔到它们自己的文件中,但它们似乎总是被渲染,即使我已将 exact 添加到 path

回家路线 - home.js:

import React from 'react';
import { BrowserRouter as Route } from 'react-router-dom';

import { HomePageView } from 'components'

const HomeRoute = () => (
  <Route exact path='/home'>
    <HomePageContainer />
  </Route>
)
export default HomeRoute;

HomePageView.js:

import React from 'react';

class HomePageView extends React.Component {
  render() {
    return (
      <div>Some text here</div>
    )
  }
}

export default HomePageView;

index.js:

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter as Router, Route } from 'react-router-dom';

import HomeRoute from 'routes/home'
import * as serviceWorker from './serviceWorker';

ReactDOM.render(
  <Router>
    <HomeRoute />
  </Router>,
  document.getElementById('root')
);

问题在于它会在任何路径上呈现 HomePageView 组件,我不明白为什么会发生这种情况,因为如果我将 &lt;HomeRoute /&gt;index.js 替换为:

  <Route exact path='/home'>
    <HomePageContainer />
  </Route>

【问题讨论】:

    标签: javascript reactjs path react-router url-routing


    【解决方案1】:

    我自己没有测试过这个,但是你在 home.js 中将 BrowserRouter 作为 Route 导入不是问题吗?

    渲染后的文件如下所示:

      <BrowserRouter>
        <BrowserRouter>
           <HomePageContainer/>
        <BrowserRouter/>
      <BrowserRouter/>
    

    你需要像这样从 react-router-rom 导入路由import { Route } from "react-router-dom";

    import 中的"as" 是别名,而不是导入的内容。

    修复 home.js 文件:

    import React from 'react';
    import { Route } from "react-router-dom";
    import { HomePageView } from 'components'
    
    const HomeRoute = () => (
      <Route exact path='/home'>
        <HomePageContainer />
      </Route>
    )
    export default HomeRoute;
    

    【讨论】:

    • 是的,这是您的问题之一。我认为还有更多需要解决的问题。在你的路由周围还需要一个Switch 组件,这会引入另一个问题,如下面的post - component nesting inside a switch component 所述。 Here 是一个带有工作路由的演示设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多