Reactチームが開発者に継承を使用させてしまったのを見たことがあるので、代わりに合成を使用しようとしています。反応の構成:高次のメソッドを公開する
export class Page extends React.PureComponent {
shouldComponentUpdate(nextProps, nextState) {
return !isEqual(nextProps, this.props) || !isEqual(nextState, this.state);
}
render() {
return this.props.children;
}
}
const mapStateToProps = (state, ownProps) => {
return {}
};
const mapDispatchToProps = (dispatch) => {
return {
onNextClick:() => dispatch(customAction())
}
};
export default connect(mapStateToProps, mapDispatchToProps)(Page);
export class FirstPage extends React.PureComponent {
render() {
return (
<Page>
<div>
<h1>Title</h1>
<Button onClick={this.props.onNextClick}>Next</Button>
</div>
</Page>
);
}
}
const mapStateToProps = (state, ownProps) => {
return {}
};
const mapDispatchToProps = (dispatch) => {
return {
onNextClick:() => dispatch(customAction())
}
};
export default connect(mapStateToProps, mapDispatchToProps)(FirstPage);
この場合、いくつかのコンポーネントはページをコンテナとして使用し、次のボタンを表示します。 dispatch(customAction())
を繰り返さないようにするには、Pageコンポーネントの次のボタンをクリックするジェネリックハンドラを公開したいと思います。 これを継承で簡単に達成できますが、私は構成パターンに悩まされています。 アイデア
これはとても明らかです!ありがとうございました。 – untemps