I have this function and when I click on the <li>
tag, I want to call two functions, onClick={handleProjectSelection(project)}
a handler function that comes from props from the parent component, and also this function onClick={() => this.setState({ showingProjectSelector: false })}
renderDropdown () {
const { displayDropdown, projects, handleProjectSelection } = this.props
if (this.state.showingProjectSelector && displayDropdown) {
const projectsList = projects.map((project) => (
<li className='u-cursor--pointer u-font-size--12px'
key={project.get('id')}
onClick={handleProjectSelection(project)} >
<i className='fa fa-square u-font-size--10px' style={{color: project.get('color')}}></i>
{project.get('name')}
</li>
))
How can I call this two functions? This is the handler function from the parent component
handleProjectSelection = (project) => () => {
this.setState({
projectToAdd: project.get('id'),
projectToAddColor: project.get('color'),
projectToAddName: project.get('name') === 'default' ? 'No' : project.get('name').substring(0, 2)
})
}
Write it like this:
onClick={() => {
handleProjectSelection(project);
anotherfunctionCall();
}}
Or create a single function, use that as a click handler. Inside that function call other two functions, Like this:
onClick={this.handleClick}
handleClick(){
function1();
function2();
}
See there are two ways of using arrow function:
1- Concise Body: () => /*single expression*/
2- Block Body: () => {}
In block body inside {}
(body of the function), we can perform any number of task.
Like this:
onClick={() => {
fun1();
fun2();
fun3();
fun4();
....
funN();
}}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With