0

I am working with routers providing routing links to the nav menu but then it seems to be not working in my index.js

 import React from 'react';
 import ReactDOM from 'react-dom';
 import './index.css';
 import App from './App';
 import registerServiceWorker from './registerServiceWorker';
 import 'bootstrap/dist/css/bootstrap.min.css';
 import { BrowserRouter as Router, Route, Link, Switch, Redirect } from 'react-router-dom';
 import Home from './Home';
  import ContactUs from './ContactUs';

  ReactDOM.render((
  <Router >
    <Route path="/" component={App}>           
       <Route path="Home" component={Home}/>
       <Route path="ContactUs" component={ContactUs}/>
    </Route>
   </Router>
  ), document.getElementById('root'));
   registerServiceWorker();

In my app.js I have my following links I am using react bootstrap with react in render function

   <Nav>
      <Dropdown nav isOpen={this.state.dropdownOpen} toggle={this.toggle}>
          <DropdownToggle nav caret>
              Dropdown
          </DropdownToggle>
          <DropdownMenu>
                <DropdownItem header>action</DropdownItem>                    
                <DropdownItem divider/>
                <DropdownItem disable> action1</DropdownItem>
          </DropdownMenu>                  
      </Dropdown>
      <NavItem>
           <NavLink>
              <Link to="Home">Home </Link>
           </NavLink>
       </NavItem>
       <NavItem>
          <NavLink>
            <Link to="ContactUs">ContactUs</Link>
          </NavLink>
       {this.props.children}
    </Nav>

it doesn't throw any error too, is this the correct way m doing? Any help will be appreciated.

using link shows up onto the url butthen it doesnt redirect to that page showing its contents

error

index.js:2178 Warning: You should not use <Route component> and <Route 
 children> in the same route; <Route children> will be ignored
 Warning: Received `true` for a non-boolean attribute `disable`.

 If you want to write it to the DOM, pass a string instead: disable="true" or disable={value.toString()}.
in button (created by DropdownItem)
in DropdownItem (at App.js:39)
in div (created by DropdownMenu)
in DropdownMenu (at App.js:36)
in li (created by Manager)
in Manager (created by Dropdown)
in Dropdown (at App.js:32)
in ul (created by Nav)
in Nav (at App.js:31)
in div (at App.js:26)
in App (created by Route)
in Route (at src/index.js:13)
in Router (created by BrowserRouter)
in BrowserRouter (at src/index.js:12)`

2 Answers 2

2

You are not using react-router-dom Link component due to which routing links are not working. you can do something like this:

<NavLink>
<Link to='Home'>Home<Link>
</NavLink>
Sign up to request clarification or add additional context in comments.

1 Comment

using link shows up onto the url butthen it doesnt redirect to that page showing its contents
2

UPDATE

In latest version, Route component doesn't allow nested route, using Switch works in this case. Updated Route would be as follows:

<Router>
<Switch>
    <Route exact path="/" component={App}>           
       <Route path="/home" component={Home}/>
       <Route path="/contact-us" component={ContactUs}/>
    </Route>
<Switch>
   </Router>

You have missed the path linking in NavLink's "to" property, the following should work for you:

<NavItem>
      <NavLink to="/Home">Home</NavLink>
       </NavItem>
       <NavItem>
       <NavLink to="/ContactUs">ContactUs</NavLink>
</NavItem>

Moreover, it's better that route defined in Route config be in lowercase:

<Router>
    <Route path="/" component={App}>           
       <Route path="home" component={Home}/>
       <Route path="contact-us" component={ContactUs}/>
    </Route>
</Router>

Also, the official docs https://github.com/ReactTraining/react-router/blob/master/packages/react-router-dom/docs/api/NavLink.md says:

<NavLink> is a special version of the <Link> that will add styling attributes to the rendered element when it matches the current URL.

Therefore, there's no need to put <Link> inside <NavLink>

6 Comments

yes right you can directly usenavlink and using activeClassName property to style active link components.
this is not working out not redirecting to the specified page nor reflecting as links
@Tested are you getting any error in console? Also please make sure you have imported all the dependencies.
@Tested try replacing "disable" with "disabled" in <DropdownItem disable> action1</DropdownItem> component
thats not the issue this is the issue -->Warning: You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.