On every state change render is called again but not whole component renders again.
React keeps Two DOM Tree Objects in memory:
- Virtual DOM
- Real DOM
React have a very intelligent and powerful diffing algorithm which calculates difference between previous DOM state and Next DOM state called Reconciliation process.
Only those sub elements which have changed would be re-rendered.
Keys help React identify which items have changed, are added, or are removed.
Keys should added to list or array elements , to give those elements a stable identity

For example, you want to delete <input key="i42"/> element from your list so on left side Its Actual DOM Tree Object and on Right side its Virtual DOM tree object. React calculates difference between two and only the difference will be Recreated Intelligently.
https://reactjs.org/docs/lists-and-keys.html
https://reactjs.org/docs/reconciliation.html#the-diffing-algorithm