Ошибка React-mdl: Ошибка неизменного: вы не должны использовать ‹Link› за пределами ‹Router›. Веб-сайт не маршрутизируется

main.js

import React from 'react';
import {BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom';
import home from './home';
import about from './about';
import menu from './menu';
import gallery from './gallery';
import franchise from './franchise';

const Main = () => (

    <Switch>

        <Route exact path ="/" component={home} />
        <Route  path ="/about" component={about} />
        <Route  path ="/menu" component={menu} />
        <Route  path ="/gallery" component={gallery} />
        <Route  path ="/franchise" component={franchise} /> 


    </Switch>
)
export default Main;

nav.js

import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import { Layout, Header, Navigation, Drawer, Content} from 'react-mdl';
import Main from './main';
export default class CustomNavbar extends Component {
  render() {
    return (
<div className="demo-big-content">
    <Layout>
        <Header title="CHEFSTYLE" scroll>

            <Navigation>
                <Link href="/" to="/">Home</Link>
                <Link href="/about" to="/about">About</Link>
                <Link href="/menu">Menu</Link>
                <Link href="/gallery">Gallery</Link>
                <Link href="/franchise">Franchise</Link>
            </Navigation>

        </Header>
        <Drawer title="CHEFSTYLE">
            <Navigation>
                <Link href="/" to="/">Home</Link>
                <Link href="/about" to="/about">About</Link>
                <Link href="/menu">Menu</Link>
                <Link href="/gallery">Gallery</Link>
                <Link href="/franchise">Franchise</Link>
            </Navigation>
        </Drawer>
        <Content>
            <div className="page-content" />
            <Main/>
        </Content>
    </Layout>
</div>  )

  }
}

Ошибка: инвариант завершился неудачно: вы не должны использовать инвариант за пределами D: /pandemic/pandemicmateria/kupsmaterial/node_modules/tiny-invariant/dist/tiny-invariant.esm.js: 11 (анонимная функция) D: / pandemic / pandemicmateria / modules / Link.js: 84 Я использую response-mdl для пользовательского интерфейса в реакции, если я использую тег Router вместо Switch в main.js и если я заключаю тег навигации с тегом Router в nav .js означает, что я не получаю никаких ошибок, но не получаю вывода ... я имею в виду, что страница не маршрутизируется относительно ссылок


person Manoj H M    schedule 15.01.2020    source источник
comment
добавьте свой файл index.js и дайте мне знать   -  person Prakash Karena    schedule 15.01.2020
comment
Я думаю, что вам может не хватать <BrowserRouter> обертки при рендеринге. Вот почему вы получаете эту ошибку. <Link ›должен находиться внутри <Router> компонента, поэтому вы получаете это сообщение об ошибке. Или вы добавили где-то еще.   -  person norbitrial    schedule 15.01.2020


Ответы (2)


Добавление BrowserRouter в Index.js, как показано ниже, сработало для меня.

ReactDOM.render (
  <BrowserRouter>
    <App />
  </BrowserRouter>,
  document.getElementById('root')
);
person Priyanka Thakur    schedule 06.06.2020

Вы можете получить доступ к своим маршрутам с помощью Link, только если все ваше приложение находится в вашем маршрутизаторе.

<BrowserRouter>
<Layout>
        <He....

</Layout>
</BrowserRouter>
person Prakash Karena    schedule 15.01.2020
comment
Уважаемый сэр, я сделал это также BrouserRouter в качестве маршрутизатора ... В этом случае я не получаю никаких ошибок, но страница не маршрутизируется ... - person Manoj H M; 15.01.2020
comment
где вы используете свой тег маршрутизатора ??? пожалуйста, обновите свой код. - person Prakash Karena; 16.01.2020
comment
вы также можете сослаться на мой проект реакции для лучшего понимания с реактивным маршрутизатором. github.com/karenaprakash/navbar -example.git - person Prakash Karena; 16.01.2020