javascript - SideNav from Materializecss stops working in React Web App -
i have simple react app react-router , materializecss styling.
the sidenav materialize works @ first when switch pages, instance going root url url/login stops working , adds hash - url/login# when menu icon clicked. has react-router , browserhistory.
here's relevant code issue:
firebase.auth().onauthstatechanged((user) => { if(user){ browserhistory.push('/'); } else{ } }); let loginredirect = (nextstate, replace, next) => { if(firebase.auth().currentuser){ store.dispatch(actions.startlogout()); replace('/'); } else{ next(); } }; reactdom.render( <provider store={store}> <router history={browserhistory}> <route path="/" component={layout}/> <route path="/login" component={login} onenter={loginredirect}/> </router> </provider> ,app); $(document ).ready(function(){$('.button-collapse').sidenav({ menuwidth: 200, edge: 'left', closeonclick: true, draggable: true } )});
jquery , react interfering heavily here. you're better off using react-material's drawer component. written in react , makes easier implement , maintain. here's example documentation:
import react 'react'; import drawer 'material-ui/drawer'; import menuitem 'material-ui/menuitem'; import raisedbutton 'material-ui/raisedbutton'; export default class drawerundockedexample extends react.component { constructor(props) { super(props); this.state = {open: false}; } handletoggle = () => this.setstate({open: !this.state.open}); handleclose = () => this.setstate({open: false}); render() { return ( <div> <raisedbutton label="open drawer" ontouchtap={this.handletoggle} /> <drawer docked={false} width={200} open={this.state.open} onrequestchange={(open) => this.setstate({open})} > <menuitem ontouchtap={this.handleclose}>menu item</menuitem> <menuitem ontouchtap={this.handleclose}>menu item 2</menuitem> </drawer> </div> ); } } i'd recommend switch material-ui other stuff want build.
Comments
Post a Comment