我是一位坚决反对呈现重定向的人,因为这有点违反直觉,您必须呈现一个组件才能更改页面,但是它确实提供了一些明显的好处
因此,问题this.props.history.push()
主要是在处理触发重定向的子组件时
Component A # the one Rendered by the Route
Component B
Component C # the one triggering the redirect
在上面的示例中,除非您努力将路线道具从Component A
down传递到Component C
,否则您将无法history.push()
在Component C
渲染Redirect
应该是由React-router的维护者提供的那种方案的答案,但是有些人根本不喜欢这个想法(包括我)。
从功能上讲,Redirect 在幕后使用该功能时,似乎在功能上Redirect
并没有重大区别history.push
。在History.push上使用Redirect的主要原因是,Redirect在将来会受到历史记录工作方式可能发生的变化或将来是否决定以不同的方式处理上下文的证明。