如何在子组件之前安装包装器组件?

时间:2017-09-25 06:36:59

标签: javascript reactjs

如果用户未经过身份验证,我正在尝试创建一个不挂载子包的包装器。否则,它会挂载并呈现子组件。 粗略看起来像这样:

export class RedirectOnCondition extends Component {
  render(){
     return this.props.isAuthenticated? this.props.children : null
  }
}

我的问题是,在父母有机会评估病情之前,孩子仍然坐着。只有在孩子的componentWillMount`(以及任何相关的API调用已经触发并失败)之后,父级的渲染才会启动并移除子级。根据{{​​3}},这就是React的工作原理。

我怎样才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

在第一个渲染中,父组件可能尚未收到处理子组件的条件渲染所需的道具。在这种情况下,您可能需要先检查道具是否已经存在。

export class RedirectOnCondition extends Component {
 render(){
   return "isAuthenticated" in this.props ? this.props.isAuthenticated? this.props.children : null : null
 }
}