Props — входные данные от родителя, только для чтения. State — собственное состояние компонента; его изменение вызывает перерисовку. Данные текут сверху вниз, события — снизу вверх через колбэки.
Что важно знать
- Состояние меняют только через сеттер и неизменяемо: новый объект или массив, а не
pushв старый — иначе React не заметит изменения. - Обновление состояния асинхронно и пакетное; зависимое от предыдущего значения — через функцию:
setN(n => n + 1). - Подъём состояния: общее для двух компонентов состояние хранят в ближайшем общем родителе.
- Ключи в списках — стабильный идентификатор элемента, не индекс: иначе при вставке и удалении путаются состояние и поля ввода.
- Композиция через
childrenвместо глубокой передачи props. - Производное значение вычисляют при рендере, а не хранят в отдельном state.