У меня проблемы с пониманием, когда я должен передавать реквизиты дочерним компонентам, а не подключать эти компоненты непосредственно к состоянию.
Существует два способа получения реквизита компонентами в моем проекте:
1) Подключение компонента (дочернего или родительского) к глобальному состоянию приставки.Это позволяет мне указать, какие части глобального состояния будет получать мой компонент, но будет перерисовываться при изменении реквизита.
const mapStateToProps = state => ({
error: state.error,
progress: state.scan.progress,
latitude: parseFloat(state.enrollment.latitude),
longitude: parseFloat(state.enrollment.longitude),
});
export default connect(mapStateToProps)(MapViewHome);
2) Передача реквизита дочерним компонентам в типичном для React-Native стиле.
<MapViewHome error={this.props.error} progress={this.props.progress} latitude={this.props.latitude} longitude={this.props.longitude} />
Я спрашиваю об этом потому, что у меня есть parent component A
, который связан с состоянием.
Parent component A
передает реквизит x
непосредственно в child B
, который передает тот же реквизит x
в child C
.
Если изменяется реквизит x
, это вызывает компоненты A, B и C для повторного рендеринга.Я мог бы избежать повторного рендеринга компонентов A и B, подключив child C
непосредственно к состоянию, чтобы это был единственный компонент, на который повлияло изменение реквизита.
Но разве это хорошая практика для подключения маленьких дочерних компонентов к глобальному состоянию?Почему бы просто не подключить каждый компонент к состоянию?