Должна быть веская причина, по которой так много людей пишут в блогах о разнице между состоянием и реквизитами (включая меня!). Это запутанная тема, независимо от того, новичок вы в программировании или имеете многолетний опыт. И состояние, и свойства — это способы хранения данных, так в чем же разница?

Что такое реквизит?

«Реквизиты» или свойства — это данные, которые однонаправленно передаются от одного компонента к другому. Реквизиты относятся к компоненту так же, как параметры к функции.

Что такое государство?

Состояние — это локальное хранилище данных, используемое для хранения информации, необходимой внутри компонента, подобно переменной, объявленной в функции. Состояние представляет свойства, управляющие поведением компонента.

Реквизит против государства

Эти два определения заставляют нас увидеть, насколько они похожи, но чем они отличаются? Есть два основных отличия.

Реквизиты неизменяемы, а состояние — нет.

Это означает, что данные в состоянии изменяются, например, когда пользователь вводит значение в форму, но свойства вводятся вручную и не могут быть изменены ни в каких дочерних компонентах.

Реквизиты являются общими для компонентов, а состояние существует только внутри одного компонента.

Основная роль реквизита заключается в передаче параметров от родительского компонента к дочернему, обеспечивая доступ к общим данным во всем приложении. Состояние хранит данные, существующие только в одном компоненте, что позволяет получить доступ к общим данным в каждой функции или классе этого компонента. Информация, хранящаяся в состоянии, может передаваться дочернему компоненту через реквизиты, но у этого дочернего компонента нет состояния.

Таким образом, в то время как свойства и состояние могут использоваться для хранения информации, тот факт, что только состояние является изменяемым и может существовать только в одном компоненте, действительно отличает его от свойств, которые являются неизменяемыми и могут быть переданы нескольким дочерним элементам.