2016-11-06 85 views
0

我想写一个包装组件,通过任何儿童道具。例如在一个纯粹的反应认证系统中。将用户道具传递给所有的孩子反应路由器

<Router history={ hashHistory } > 
<Route path="/" component={Base}> 
<Route component={Auth}> 
    <Route path="/who" component={Who} /> 
    <Route path="/features" component={Features} /> 
    <Route path="/try" component={Try} /> 
</Route> 
</Route> 
</Router> 

我想通过道具来传递一个用户无论是谁,功能或尝试从验证的组件,这将拉动从本地存储。

我试图做的愚蠢的事情是操纵this.props或this.props.children,但这是不好的,什么是推荐的解决方案?

class Auth extends Component { 
    render() { 
    //find user or null 
    var user = JSON.parse(localStorage.getItem('user')) || []; 
    //this.props.user = user; 
    console.log('top level router props.user', this.props.user); 
    return (
    <div> 
    {this.props.children} 
    </div> 
    ); 
    } 
} 
+0

可以使用'onEnter'实施例的子路由的会是这样'<路由路径= “仪表板” 成分= {}仪表板的OnEnter = {requireAuth} />' –

+0

@KeshanNageswaran为感谢回复,我的应用程序对角色更具体,我希望能够评估一个字符串。我围绕基础反应组件类编写了一个小型封装API,我可以评估它,但我不确定如何从顶层传递。 我想我可能需要使用cloneElement – mibbit

+0

希望[react-router-role-authentication](https://www.npmjs.com/package/react-router-role-authorization)满足您的需要,我发现这个[博客文章](http://frontendinsights.com/role-based-authorization-using-react-router/) –

回答

相关问题