ホームページ >ウェブフロントエンド >jsチュートリアル >幅に基づいて高さを適応させる React の共有例

幅に基づいて高さを適応させる React の共有例

小云云
小云云オリジナル
2018-01-25 11:40:492642ブラウズ

レスポンシブなレイアウトでは、コンポーネントの幅に応じて高さを調整する必要がある場合があります。 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(&#39;root&#39;)
);

参考資料

React ライフサイクル

関連する推奨事項:

JavaScript は Iframe の適応高さを処理します (同じまたは異なるドメイン名の下で)

DIV+CSS レイアウトでの適応高さの解決策

モバイルで適応高さの下でテキストを中央揃えにする方法


以上が幅に基づいて高さを適応させる React の共有例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。