Еще надо подумать о резервировании имен, чтобы потом не забирать у пользователей имена вроде rules, promo, bookmarks и прочего.- Для этого у меня и будет таблица(которая содержит path, data, component) в бд.
<Switch>
<Route exact path="/" component={Main} />
<Route path="/help" component={Help} />
<Route path="/:user_name" component={User} />
</Switch>
export default withRouter((props) => {
return (
<div className="App">
<header>
<ul>
<li>
<NavLink to="/">Home</NavLink>
</li>
<li>
<NavLink to="/info">Info</NavLink>
</li>
<li>
<NavLink to="/1111111">account</NavLink>
</li>
<li>
<NavLink to="/88888">Not Found Page</NavLink>
</li>
</ul>
</header>
<div>
{props.location.pathname}
</div>
</div>
);
});
<Switch>
<Route exact path="/" component={Main} />
<Route path="/help" component={Help} />
<Route path="/:user_name" component={User} />
</Switch>