ホームページ > ウェブフロントエンド > jsチュートリアル > React で特定の要素まで自動的にスクロールするにはどうすればよいですか?

React で特定の要素まで自動的にスクロールするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-25 10:51:12
オリジナル
374 人が閲覧しました

How to Scroll Automatically to a Specific Element in React?

特定の要素まで自動的にスクロールする方法

問題:

チャット ウィジェットでは、新しいメッセージが自動的に表示されます。ユーザーが上にスクロールすると、ビューがスクロールします。ただし、新しいメッセージが読み込まれるときにスライダーが上部に固定されたままになるため、最新のメッセージが見にくくなります。

解決策:

次のときに特定の要素までスクロールします。新しいメッセージが追加された場合は、次の手順に従ってください:

React 16.8 、機能コンポーネント

const ScrollDemo = () => {
  const myRef = useRef(null);
  const executeScroll = () => myRef.current.scrollIntoView(); // Run this function to execute scroll
  return (
    <>
      <div ref={myRef}>Element to scroll to</div>
      <button onClick={executeScroll}>Click to scroll</button>
    </>
  );
};
ログイン後にコピー

React 16.3 、クラスコンポーネント

class ReadyToScroll extends Component {
  constructor(props) {
    super(props);
    this.myRef = React.createRef();
  }

  render() {
    return <div ref={this.myRef}>Element to scroll to</div>;
  }

  executeScroll = () => this.myRef.current.scrollIntoView(); // Run this method to execute scrolling
}
ログイン後にコピー

クラスコンポーネント - Ref コールバック

class ReadyToScroll extends Component {
  render() {
    return (
      <div ref={(ref) => (this.myRef = ref)}>Element to scroll to</div>
    );
  }

  executeScroll = () => this.myRef.scrollIntoView(); // Run this method to execute scrolling
}
ログイン後にコピー

Avoid String Refs:

文字列参照はパフォーマンスの問題のため推奨されません。構成可能性が欠如しており、将来の React リリースでは削除される可能性があります。

オプション: スムーズ スクロール アニメーション:

スムーズなスクロール エクスペリエンスを実現するには、次の CSS を html 要素に追加します。 :

html {
  scroll-behavior: smooth;
}
ログイン後にコピー

Ref を a子:

子コンポーネント内の特定の DOM 要素に参照をアタッチするには:

const MyComponent = () => {
  const myRef = useRef(null);
  return <ChildComp refProp={myRef} />;
};
ログイン後にコピー

ChildComp コンポーネント内:

const ChildComp = (props) => {
  return <div ref={props.refProp} />;
};
ログイン後にコピー

以上がReact で特定の要素まで自動的にスクロールするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート