所以,我试图在注销页面和重定向到主网页之间稍微延迟一下。但是我遇到了这个问题,当我们把它放在<Redirect/>
的{{1}}内时, react-router-dom setTimeout()
方法不需要火。< / p>
因此,如果我们从计时器中解开它,setInterval()
将正常工作。
问题是什么,有什么建议吗?
我的代码:
<Redirect/>
答案 0 :(得分:5)
您希望USE db_name;
ALTER TABLE table_name ENGINE=MYISAM;
方法返回render()
,以便进行重定向。目前<Redirect />
函数返回setTimeout
,但这不会影响<Redirect />
本身的结果。
相反,render()
应该只是render()
&gt;如果return <Redirect /
为this.state.navigate
,则您将true
方法延迟2秒。
这是一种纠正的,声明性的方式:
setState({ navigate: true })
对于命令式版本,请参阅@Shubham Khatri的回答。
答案 1 :(得分:0)
Redirect
才能使其正常工作,如果要从api调用重定向,可以使用history.push
以编程方式导航。您也宁愿使用setState回调而不是超时
componentDidMount(e) {
axios.get('http://localhost:3016/logout')
.then(
this.setState({
navigate: true
}, () => {
this.props.history.push("/employers");
}),
)
.catch(err => {
console.error(err);
});
};
查看Programmatically Navigate using react-router
了解详情
即使你在渲染中的setTimeout中添加Redirect也不会有效,因为它不会渲染它,而只是在setTimeout中返回的一部分