2016-11-06 92 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/) –

回答

相關問題