レスポンシブなレイアウトでは、コンポーネントの幅に応じて高さを調整する必要がある場合があります。 CSS ではこの種の動的な変更を実現できません。従来は、これを実現するために jQuery が使用されていました。この記事では、幅に応じて高さを調整する React のサンプルコードを中心に紹介します。編集者が非常に優れていると感じたので、参考として共有します。編集者をフォローして見てみましょう。皆さんのお役に立てれば幸いです。
React では JQuery に依存する必要はなく、実装は比較的単純で、DidMount の後に幅を変更するだけです。
Codepen を試してみる
サイズ変更中に変更を同期する必要があり、リスナーを登録する必要があることに注意してください
class Card extends React.Component { constructor(props) { super(props); this.state = { width: props.width || -1, height: props.height || -1, } } componentDidMount() { this.updateSize(); window.addEventListener('resize', () => this.updateSize()); } componentWillUnmount() { window.removeEventListener('resize', () => this.updateSize()); } updateSize() { try { const parentDom = ReactDOM.findDOMNode(this).parentNode; let { width, height } = this.props; //如果props没有指定height和width就自适应 if (!width) { width = parentDom.offsetWidth; } if (!height) { height = width * 0.38; } this.setState({ width, height }); } catch (ignore) { } } render() { return ( <p className="test" style={ { width: this.state.width, height: this.state.height } }> {`${this.state.width} x ${this.state.height}`} </p> ); } } ReactDOM.render( <Card/>, document.getElementById('root') );
参考資料
React ライフサイクル
関連する推奨事項:
JavaScript は Iframe の適応高さを処理します (同じまたは異なるドメイン名の下で)
以上が幅に基づいて高さを適応させる React の共有例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。