Является ли хорошей практикой передавать государство в качестве реквизита для детей?

Я нахожу себя агрегированием состояния на одном компоненте. Обычно node Я знаю, что я буду повторно отображать, так что изменения могут распространяться и состояние не повсеместно. В последнее время я обнаружил, что передаю состояние этого компонента в качестве реквизита для своих первых детей, используя var Child = React.createClass({ handleClick: function(){ this.props.owner.setState({ count: this.props.count + 1, }); }, render: function(){ return <div onClick={this.handleClick}>{this.props.count}</div>; } }); var Parent = React.createClass({ getInitialState: function(){ return { count: 0, owner: this }; }, render: function(){ return <Child {...this.state}/> } });

И он работает (), вы всегда можете вернуться к этому компоненту, чтобы понять, что происходит, и сохранить состояние как минимальное, возможное.

Таким образом, фактический вопрос заключается в том, что это/не является хорошей практикой и почему.

В последнее время я могу думать о том, что при таком подходе возможно, что каждый дочерний компонент всегда будет повторно рендерингом, когда на собственнике будет изменено состояние, если в этом случае я думаю, что приведенное выше - это то, что нужно использовать на небольших Деревья компонентов.

Ответ 1

Да!

Состояние должно быть установлено только на элементе верхнего уровня, это гарантирует, что данные только когда-либо будут протекать одним путем через ваши компоненты.

Помните, что React выполнит только изменения, внесенные со времени последнего рендеринга, если части ваших дочерних элементов не были изменены, они не будут повторно отображены в DOM.

React имеет раздел в своих документах под названием подъем состояния.