У меня есть app.js:
import { Route, BrowserRouter, Switch, HashRouter } from 'react-router-dom'
import { env } from 'config'
const Router = env === 'dev' ? HashRouter : BrowserRouter
let store = createStore(rootReducer,
compose(
applyMiddleware(thunk),
window.devToolsExtension ? window.devToolsExtension() : f => f
)
)
<Provider store={store}>
<Router>
<Switch>
<Route name="aboutus" path="/aboutus" component={AboutUsContainer}/>
<Route name="home" path="/" component={HomePageContainer}/>
</Switch>
</Router>
</Provider>
И в AboutusContainer у меня есть:
// other imports
import { withRouter } from 'react-router-dom'
class AboutUsContainer extends Component {
render() {
return (
<div id="aboutus">{this.props.text}</div>
)
}
}
function select(state) {
return {
text: state.aboutUsText,
}
}
export default withRouter(connect(select)(AboutUsContainer))
В HomePageContainer:
import { withRouter } from 'react-router-dom'
class HomePageContainer extends BaseComponent {
render() {
return (
<HomePageContent content={this.props.text}/>
)
}
}
function select(state) {
return {
text: state.homePageText,
}
}
export default withRouter(connect(select)(HomePageContainer))
И вHomePageContent, это:
import { Link } from 'react-router-dom'
export default class HomePageContent extends Component {
render() {
return <Link to='/aboutus'>{this.props.content}</Link>
}
}
, и если я нажимаю на ссылку на HomePageContent, я вижу, что URL-адрес изменяется на / # / aboutus, но компонент страницы не обновляется и все еще находится на старой странице.Повторное нажатие на ту же ссылку даст:
Warning: Hash history cannot PUSH the same path; a new entry will not be added to the history stack
, что подтверждает, что приложение действительно распознало местоположение в качестве ожидаемого местоположения.
Я использую response-router-dom@4.3.1
Другой вопрос предложил использовать withRouter, но я сделал это.Что я пропустил?