source: https://reactjs.org/docs/faq-functions.html