http://blog.kdchang.cc/2015/10/reactjs-notes-intro.html