【发布时间】:2017-07-21 08:36:01
【问题描述】:
我正在使用 React [15.6.1] 和 Router [4.1.1] 构建文章搜索,并注意到在尝试直接访问文章时加载了前一个组件,即使它不是被调用的组件
// === Layout ==================
class Layout extends React.Component {
render() {
return (
<Provider store={this.props.store}>
<HashRouter>
<div>
<Switch>
<Route exact path="/" component={SearchFilter} />
<Route path="/article/:guid" component={Article} />
</Switch>
</div>
</HashRouter>
</Provider>
);
}
}
// === SearchFilter ==================
class SearchFilter extends React.Component {
componentDidMount() {
console.log('SearchFilter Did Mount');
}
render() {
return (
<div>...</div>
);
}
}
// === Article ==================
class Article extends React.Component {
componentDidMount() {
console.log('Article Did Mount');
}
render() {
return (
<div>...</div>
);
}
}
所以当转到根目录时 localhost:3000/#/ 它会打印出来
// SearchFilter Did Mount
当我像这样 localhost:3000/#/article/123456 直接访问一篇文章时,它会打印出来
// SearchFilter Did Mount
// Article Did Mount
所以我的问题是,我怎样才能防止它运行以前的路线? 因为我想在那里分派一些动作,这些动作会触发对 web 服务的一些 ajax 调用。
谢谢
【问题讨论】:
标签: reactjs react-router