let's have following main react application, using react-redux , react-router (but not react-router-redux yet):
<provider store={store}> <router history={hashhistory}> <route path="/" component={app}> <indexroute component={loginrequiredpage}/> <route path="/login" component={login} /> <route path="/entries" component={showentries} /> </route> </router> </provider> in store have state isloggedin , change component of indexroute showentries when isloggedin true , loginrequiredpage if becomes false. i'm not sure how achieve this, can think of several ways:
- use react-redux
connectmethod onindexroutemapisloggedinnew valuecomponentproperty. - create
homecomponent, connect store, switch out child component depending onisloggedin, havehomenewindexroutecomponent
which option better or there better solution?
i'd current view change while index route active , isloggedin state changes.
the straightforward way declare component either return showentries or loginrequiredpage based on value of property of store:
<provider store={store}> <router history={hashhistory}> <route path="/" component={app}> <indexroute component={index}/> <route path="/login" component={login} /> <route path="/entries" component={showentries} /> </route> </router> </provider> and
@connect(state => ({ isloggedin: ... // <- place correct value here })) class index extends component { render() { const { isloggedin } = this.props; if (isloggedin) { return <showentries /> } else { return <loginrequiredpage /> } } } another way check if user has logged in per every route enter via onenter prop, , redirect route, means you'll evidently change location user sees in browser. if you're curious, check out this tip.
Comments
Post a Comment