Source: https://6.470.scripts.mit.edu/2014/slides/React-MIT.pdf