2017-09-25 50 views
0

我试图创建一个包装器,如果用户未经过身份验证,则不会装入子级。否则,它会挂载并呈现子组件。 大致是这样的:如何在其子组件之前装入包装器组件?

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

我的问题是孩子还是安装父有机会评估条件之前。只有在子元素的componentWillMount(以及任何关联的API调用已经触发并失败)之后,父级的渲染才会踢入并移除该子级。根据this question这是React的工作原理。

我该如何解决这个问题?

+0

父母如何评估病情?您可以将条件的初始值保留为false,并在用户通过身份验证时将其设置为true。 –

+0

条件传递视图重新连接,它正在评估正确,但正如我所说我的问题是,孩子在父亲呈现之前安装。我想让父母先渲染 –

+0

我们需要更多关于你如何实际使用RedirectOnCondition HOC以及如何使用this.props.isAuthenticated –

回答

0

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

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