The initial render() call of a component returns a lightweight description of how your DOM should look like. When a change triggers another render() call, React does a diff comparing the new return value with the previous call's return value, to generate the minimal set of changes needed to go from the old render to the new render.
The process of doing this diff is what is called reconciliation. This is an excellent article with a high-level overview of how React does it.