【发布时间】:2018-07-03 16:30:57
【问题描述】:
我想使用 react 路由器而不是从父级传递道具到子级,而是从一个页面传递到另一个页面。我不确定它是否可能,但在这里找到了一些看起来可能的文章/帖子。根据阅读的内容,我的代码应该可以工作,但事实并非如此。有人可以帮忙吗?
index.jsx:
ReactDOM.render(<HashRouter><App /> </HashRouter>,document.getElementById('app'))
App.jsx:
class App extends React.Component {
render (){
return (
<div>
<Switch history={browserHistory}>
...
<Route exact path='/home/step1' component={Component1}/>
<Route exact path='/home/step2' component={Component2}/>
</Switch>
</div>
)
}
}
...
import { Switch, Route, browserHistory} from 'react-router-dom'
我的 2 个组件
import { Link, browserHistory } from 'react-router-dom';
export default class Component1 extends React.Component {
constructor(props) {
super(props)
this.state = {
id: undefined
}
this.navigateToStep2=this.navigateToStep2.bind(this);
}
navigateToStep2(e){
e.preventDefault();
browserHistory.push({pathname: "/home/step2", state:{id: this.state.id}})
}
}
import { Link, browserHistory } from 'react-router-dom';
export default class Component2 extends React.Component {
render(){
return (
<div>
<h1>hello: {this.props.id}</h1>
</div>
)
}
我也尝试过的是:
this.context.router.push({
pathname: '/home/step2',
state: {providerId: this.state.providerId}
})
这不太好,但据我了解,因为路由器 4,我现在必须使用历史浏览器?
【问题讨论】:
-
如果你不喜欢使用像 Redux 这样的 store 解决方案,你可以使用
App组件来保持你的路由所需的 props 状态,并将回调方法传递给Component1和Component2更新此类状态。
标签: reactjs react-router browser-history react-router-v4