В
документации по реакту написано, что он сопоставляет состояние и компонент, основываясь на
позиции компонента в итоговом UI-дереве. Т.е. если некий компонент оказывается в одном и том же месте, то стало быть это считается один и тот же компонент и вот его состояние. Подчеркивается, что важна именно позиция в итоговом дереве, а JSX как бы и не важен (хотя как он может быть не важен, если именно на основе него строится дерево).
Я написал пару примеров на основе этой информации.
Пример 1. Тут счетчик оказывается на одном и тот же месте и при его переименовании состояние сохраняется.
Но вот
Пример 2. Написан по аналогии с
этим примером из документации. Здесь счетчик при переименовании сбрасывается.
Не очень понимаю почему? В обоих случаях счетчик оказывается на первом месте в дереве и завернут в . Есть смутные подозрения, что дело в том, что в первом примере один блок, а втором два блока и поэтому там счетчики считаются разными компонентами. Но тогда это не вяжется с утверждением, что значение имеет только позиция в итоговом дереве.