Во-первых,
Единственное место, где вы можете назначить this.state - это конструктор.
Как мы все знаем, причина, по которой мы используем state
в компоненте React каждый раз, когда состояние компонента обновляется, он запускает повторную визуализацию компонента, чтобы его представление отражало состояние компонента.Чтобы использовать это преимущество, предоставляемое компонентом state
, мы должны подчиниться механизму.
Более того, процесс повторной визуализации происходит только тогда, когда мы обновляем состояние компонента соответствующим образом, который используетsetState()
method.
![enter image description here](https://i.stack.imgur.com/xOmWe.png)
Дополнительную информацию вы можете найти здесь: Не изменять состояние напрямую
Во-вторых,
Ваш код this.props.brother = 'sister';
точно не будет работать.
Это демо: https://codesandbox.io/s/j354ypk645
Вы получите ошибку:
Невозможно добавить свойство брат, объект не является расширяемым
Причина в том, что согласно документу React объекты доступны только для чтения , они сказали:
Реквизиты доступны только для чтения
Независимо от того, объявляете ли вы компонент как функцию или класс, он никогда не должен изменять свои реквизиты.
...
Все компоненты React должны действовать как чистые функции по отношению к своим реквизитам.
Наконец,
Согласно документу React, раздел Constructor () говорит:
Если вы не инициализируете состояние и не связываете методы, вы неНе нужно реализовывать конструктор для вашего компонента React.
И
Конструктор для компонента React вызывается перед его монтированием.При реализации конструктора для подкласса React.Component вы должны вызывать super (props) перед любым другим оператором.В противном случае this.props будет неопределенным в конструкторе, что может привести к ошибкам.
Что ж, тогда вы можете использовать this.props.brother
, чтобы получить значение этого свойства, которое передается изродительский компонент.Тем не менее, это только для get
, вы не должны set
значение для него.Причина была объяснена во второй части этого ответа.