【问题标题】:React-router-dom -Same route issueReact-router-dom - 相同的路由问题
【发布时间】:2019-01-15 15:39:44
【问题描述】:

我是 react js 框架的新手,我目前正在做导航,但我遇到了关于我的路线的问题。这是我新安装的 react js 组件。

索引.js

 import React from 'react';
 import ReactDOM from 'react-dom';
 import App from './App';
 import registerServiceWorker from './registerServiceWorker';
 import 'bootstrap/dist/css/bootstrap.min.css';


ReactDOM.render(<App />, document.getElementById('root'));
registerServiceWorker();

App.js

import React, { Component } from 'react';
import './App.css';
import Routes from './routes';

class App extends Component {
  render() {
    return (
      <div>
        <Routes/>
      </div>
    );
  }
}
export default App;

src/routes/index.js

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

import Root from '../components/Root';
import Home from '../components/Home';
import About from '../components/About';
import Contact from '../components/Contact';

export default() =>(
<BrowserRouter>
    <Switch>
        <Route exact path="/" component={Root}>
            <Route exact path="/home" component={Home}/>
            <Route exact path="/about" component={About}/>
            <Route exact path="/contact" component={Contact}/>
        </Route>
    </Switch>
</BrowserRouter>
)

src/components/Root.js

import React, { Component } from 'react';

import Header from './Header';

class Root extends Component {
  render() {
    console.log(this.props)
    return (
        <div>
            <div>
                <Header/>
            </div>
            <div>
                {this.props.children}
            </div>
        </div>
    );
  }
}
export default Root;

src/components/Header.js

import React, { Component } from 'react';
import {Navbar} from 'reactstrap';

class Header extends Component {

  render() {
    return (
        <div>
            <Navbar color="light" light expand="md">
                //navbar html code here
            </Navbar>
        </div>  
    );
  }
}
export default Header;

index.js:2178 警告:您不应在同一路由中使用&lt;Route component&gt;&lt;Route children&gt;&lt;Route children&gt; 将被忽略

这是我的问题。

【问题讨论】:

    标签: reactjs react-router-dom


    【解决方案1】:

    我认为您的警告缺少一些信息,因为 SO 似乎已经删除了类似 XML 的标签。

    查看代码,我很确定警告应该说:

    You should not use &lt;Route component&gt; and &lt;Route children&gt; in the same route; &lt;Route children&gt; will be ignored

    问题是您已将某些路线作为另一条路线的“孩子”。你不需要这样做。

    <Switch>
        <Route exact path="/" component={Root}>
            <Route exact path="/home" component={Home}/>
            <Route exact path="/about" component={About}/>
            <Route exact path="/contact" component={Contact}/>
        </Route> // This is the problem, you don't need to enclose this.
    </Switch>
    

    您无需将Routes 括起来,因为它们都是准确的,并且始终将组件与路径匹配。

    <Switch>
        <Route exact path="/" component={Root} />
        <Route exact path="/home" component={Home}/>
        <Route exact path="/about" component={About}/>
        <Route exact path="/contact" component={Contact}/>
    </Switch>
    

    【讨论】:

    • 嗨 Dubes,警告已解决,但当我单击导航时。例如关于页面。缺少标题导航。我是否错过了我的根 js 上的某些内容?
    • 你的答案是正确的,但是当我点击我的关于链接时......我的导航丢失了。但是 about 的内容被渲染了。
    • 这可能是“导航”组件或您用于导航的机制的问题。这也可能是您使用的浏览器的问题。您能提出一个新问题并提供这些详细信息吗?
    【解决方案2】:

    这对我总是有用的

    Nested Routes in React Router v4

    【讨论】:

    • 我不认为“确切”导致了 OP 面临的问题。来自官方文档:reacttraining.com/react-router/core/api/Route/exact-bool 这只是一个关于匹配是精确还是宽松的说明。
    • 嗨 Raj,如何渲染 about 和 product 的内容?
    • @JayArViluan 因为我使用了 Product
    • @RajJaril dubes 答案是正确的,但是当我点击我的关于链接时.. 我的导航丢失了。但是 about 的内容被渲染了。
    猜你喜欢
    • 2019-03-17
    • 1970-01-01
    • 2022-06-15
    • 2022-01-09
    • 2020-10-14
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    相关资源
    最近更新 更多