我想写一个包装组件,通过任何儿童道具。例如在一个纯粹的反应认证系统中。将用户道具传递给所有的孩子反应路由器
<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>
);
}
}
可以使用'onEnter'实施例的子路由的会是这样'<路由路径= “仪表板” 成分= {}仪表板的OnEnter = {requireAuth} />' –
@KeshanNageswaran为感谢回复,我的应用程序对角色更具体,我希望能够评估一个字符串。我围绕基础反应组件类编写了一个小型封装API,我可以评估它,但我不确定如何从顶层传递。 我想我可能需要使用cloneElement – mibbit
希望[react-router-role-authentication](https://www.npmjs.com/package/react-router-role-authorization)满足您的需要,我发现这个[博客文章](http://frontendinsights.com/role-based-authorization-using-react-router/) –