Reputation: 4066
I am creating a header which shows sign in / sign up link if the user is not already signed in or a sign out link if a user is already signed in
Here is my header component:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { Link } from 'react-router';
class Header extends Component {
renderLinks() {
if(this.props.authenticated) {
return (
<li className="nav-item">
<Link to="/signout" className="nav-link">Sign Out</Link>
</li>
);
}
else {
return (
[
<li className="nav-item">
<Link to="/signin" className="nav-link">Sign In</Link>
</li>,
<li className="nav-item">
<Link to="/signup" className="nav-link">Sign Up</Link>
</li>
]
);
}
}
render () {
return (
<nav className="navbar navbar-light">
<Link to="/" className="navbar-brand">Redux Auth</Link>
<ul className="nav navbar-nav">
{this.renderLinks()}
</ul>
</nav>
);
}
}
const mapStateToProps = (state) => {
return { authenticated: state.auth.authenticated };
}
export default connect(mapStateToProps)(Header);
I am getting the following error in the browser
Warning: Failed Context Types: Required context router.push
was not specified in Link
. Check the render method of Header
.
Uncaught TypeError: router.createHref is not a function
I am using react router version 2.0.1
Why am I facing this issue? What does this error mean?
Upvotes: 0
Views: 4998
Reputation: 1120
react-router
does not provide Link
, you need to use react-router-dom
for this.
Replace
import { Link } from 'react-router';
with
import { Link } from 'react-router-dom';
That'll work for you.
Upvotes: 1