Briefly, the point is that state should be set only via setState() - since this will trigger some events, and is also an asynchronous operation.
More details source - documentation React components (in English.)
Notes: NEVER mutate this.state directly, as calling setState () afterwards. Treat this.state as if it were immutable.
setState () doesn’t immediately mutate this.state but creates a pending state transition. Accessing this.state after this value.
There is no guarantee that it will be batched for performance gains.
setState () will always be triggered unless it’s conditionComponentUpdate (). It couldn’t be necessary to implement it.
Translation ( from here ):
Notes: NEVER change this.state directly, by calling setState () which afterwards can replace the changes you made. Treat this.state as if it were unchanged.
setState () does not immediately change this.state, but creates a pending state transition. Access this.state after calling this method can potentially return an existing value.
There is no guarantee that the synchronous operation of the setState call operations, calls can be grouped in order to improve performance.
setState () will always re-render until the conditional rendering logic is implemented in shouldComponentUpdate (). If mutable objects are used and the logic cannot be implemented in shouldComponentUpdate (), setState () is called only when the new state is different from the previous state to avoid unnecessary re-rendering.