Note: if you modify this.state but don't do it through setState you still need to call forceUpdate()