A component's mutable state is maintained by its state (which is private to each component). state is also highly reactive: every single time you call this.setState() the component re-renders itself and while doing so, the underlying UI component(s) can take advantage of the freshly set state. All this magic is handled by the virtual DOM that React maintains.
Parent-children components can communicate via props. props, unlike state, are completely immutable (i.e. you would get a runtime Error if you tried to modify them). But would not be nice to treat state as immutable too? That's where immutable comes into the picture!
Wikipedia autocomplete demo using ReactJS and immutable together
(you can find the whole demo project on github here)