この記事の内容は、React の高レベルのコンポーネントの使用例に関するものです。必要な方は参考にしていただければ幸いです。
高次コンポーネント
HOC は React の標準 API ではありません。
HOC は関数です。
HOC は Component
を返します。
例:
const EnhancedComponent = higherOrderComponent(WrappedComponent);
React バージョン 0.15 より前の mixin と同様です。
HOC は、複数のコンポーネントが 1 つのコードまたは同じメソッドを使用する場合に使用できます。
例:
import React, { PureComponent } from 'react'; const Common = (WrapComponent) => { return ( <div> <h1>Title</h1> <WrapComponent /> </div> ); }; const Header = () => <div>Header</div>; const Footer = () => <div>Footer</div>; export default class extends PureComponent { render() { return ( <div> <div> <p>Header Component</p> {Common(Header)} </div> <hr /> <div> <p>Footer Component</p> {Common(Footer)} </div> </div> ); } }
抽象状態と変更プロパティ
は次のようにラップできます。 WrappedComponent コンポーネントのパブリック状態は抽象化されています。
WrappedComponent でラップされたコンポーネントを通じて、変更や追加などの props を渡すことができます。
例:
const HOComp = (WrappedComponent) => { return class extends React.Component { constructor(props) { super(props); this.state = {name: ''}; } componentDidMount() { this.setState({name: WrappedComponent.displayName || WrappedComponent.name || 'Component';}); } return <WrappedComponent name={this.state.name} {...this.props}/> } }
条件付き Xuanran。小道具または状態条件に基づいて Xuanran のコンテンツを返します。
例:
const HOComp = (WrappedComponent) => { return class Enhancer extends WrappedComponent { render() { if (this.props.loggedIn) { return super.render() } else { return null } } } }
返された上位コンポーネント クラス (Enhancer) は、WrappedComponent を継承します。
例:
const EnchanceComponent = (WrappedCompopnent) => { return class extends WrappedCompopnent { constructor(props) { super(props); this.state = { error: '' }; } componentDidMount() { /*do something*/ super.componentDidMount(); } render() { if (this.state.error) { return <p>{this.state.error}</p>; } else { return super.render(); } } } };
以上がReact での高次コンポーネントの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。