Understanding React and reimplementing it from scratch Part 2: Controllers