i have render within component looks this:
render() { if (!this.props.authorities) { return <div>loading...</div> } return ( <div> <col xsoffset={0.5} md={2}> <buttongroup col xsoffset={1} md={4} justified centered> <dropdownbutton title="authority" id="bg-justified-dropdown"> {this.props.authorities.map(this.renderauthority)} </dropdownbutton> </buttongroup> </col> </div> ) } } it renders list of dropdown items using renderauthority function, looks this:
renderauthority(authoritydata) { return ( <menuitem onclick={this.clickauthority(authoritydata.localauthorityid)} key={authoritydata.localauthorityid} eventkey={authoritydata.localauthorityid}>{authoritydata.name}</menuitem> ) } the onclick within there calls function called clickauthority, looks this:
clickauthority(data) { this.props.fetchratings(data) } my constructor looks this:
constructor(props) { super(props); this.clickauthority = this.clickauthority.bind(this); } however, error following:
unhandled rejection (typeerror): cannot read property 'clickauthority' of undefined this references menuitem onclick. idea i'm doing wrong , how might fix it?
by default, .map() function bind callback global environnement object. binds this.renderauthority function this in constructor too.
constructor(props) { super(props); this.renderauthority = this.renderauthority.bind(this); this.clickauthority = this.clickauthority.bind(this); } secondly, when writing that:
onclick={this.clickauthority(authoritydata.localauthorityid)} you instantly calling function , giving return onclick property. have make this:
onclick={() => this.clickauthority(authoritydata.localauthorityid)}
Comments
Post a Comment