【发布时间】:2019-01-05 11:58:38
【问题描述】:
这是我的导航组件:
import React from 'react'
class Navigation extends React.Component {
constructor(props) {
super(props);
this.state = {
type: 'signUp', // or login
showModal: false,
isLoggedIn: false,
}
}
...some code
render() {
const { showModal, type, isLoggedIn } = this.state
console.log(this.props.location); // all problem is this, I'm not getting it in console
return(
...some more code
)
}
}
export default withRouter(Navigation)
这是它在 app.js 中使用的地方
class App extends React.Component {
render () {
return(
<Router>
<Fragment>
<Navigation /> // <= right there
<Switch>
<Route exact path='/' component={HomePage}/>
<Route exact path='/search' component={HomePage}/>
<Route component={Lost} />
</Switch>
</Fragment>
</Router>
)
}
}
我想在我的 <Navigation /> 组件中获得更新的路由道具,例如 match 和 location 和 history 但是我只有在组件第一次安装在 DOM 上时才得到它,在我的其他组件中,我使用window.history.pushState 更新路由,但在浏览器中的链接更新后,我无法从 withRouter 获取路由道具。
我用window.history.pushState 更新路线,因为:
-
我找不到任何方法来更新地址栏中的链接而不显示用户或使用 React 路由器 DOM 将用户重定向到新组件(我这样做是否正确?)
基于此,我然后使用
window.location.pathname为某些组件添加一些特定的样式)
【问题讨论】:
标签: javascript reactjs react-router browser-history