【发布时间】:2019-01-15 23:28:10
【问题描述】:
我正在通过 Redirect 从 react-router-dom v4 重新加载一个组件, 当组件第一次加载时,api 调用发生在 ComponentDidMount 中。但是当 Redirect 触发组件重新加载时,此方法不会运行。
我有组件 TopicList ,它使用来自 react-router-dom 的 Route 由路径 /topic 显示
PostTopic 是一个在 TopicList 中呈现的 Modal。在 PostTopic 内部,我向状态添加了一个名为 redirect 的属性,并使用它来渲染一个 Redirect Component to="/topic",我在将一些数据发布到 api 后重定向。
在 topicList 通过 Redirect 重新加载时,componentDidMount() 未运行,因此不会发生 api 调用来获取新发布的数据。
在通过 Redirect 从 react-router 重新加载相同的路由之后,从 api 调用重新获取数据的最佳方法是什么。
class PostTopic extends Component
state = {
redirect: false
}
handleSubmit = (e) => {
e.preventDefault();
const { body, subject } = this.state;
api.postTopic(this.props.store.token,subject,body)
.then( response => {
this.setState({redirect:true})
})
.catch( error => {
this.setState({error});
});
}
renderRedirect = () => {
if(this.state.redirect){
return <Redirect to={this.props.currentPath}/>
}
}
render(){
return(
...
...
...
{this.renderRedirect()}
}
}
【问题讨论】:
标签: javascript reactjs react-router-v4