コンポーネントが完全にレンダリングされた後、特定の要素の正確な位置を取得するには、getBoundingClientRect()
を使用する必要があります。一度コンポーネントがレンダリングされるライフサイクルメソッド
これにはどのライフサイクルメソッドを使用する必要がありますか?私はレンダリングが完了した後にcomponentDidMount()
が呼び出されたとは思わない。
もっと分かりやすくするために、私が達成しようとしているのは次のとおりです。 私のコンポーネントはDIV
要素のリストをレンダリングします。 30〜40人もの人がいる可能性があります。それらがレンダリングされると、特定の要素に自動的にスクロールしたいと思います。この要素は、レンダリングされたセクションの下部、中央、またはどこにでも配置できます。私はそれぞれのDIV
要素をIDにするので、getBoundingClientReact()
にその場所を知らせるのは簡単です。そのデータを取得したら、その場所にスクロールします。
UPDATE:
これは私のコードは次のようになります。
componentDidUpdate(prevProps, prevState) {
// Get the ID of the element I need to scroll to
const id = "divId-" + prevProps.myId;
// Find the rendered element
const element = document.getElementById(id);
// Get coordinates
const position = element.getBoundingClientRect();
// Call scrollTo custom function to scroll to the element
scrollTo(position.top);
// Set the new location
this.props.actions.setLocation(position.top);
}
はい、 'setLocation'は基本的にReduxストアの新しい場所を設定します。一度私がそれを把握したら新しい場所を設定するための最良の方法は何ですか?基本的には、私はコードの一部として 'componentDidUpdate()'の新しい場所を探し出します。 – Sam
>ここでthis.setState()を呼び出すことはできません。 componentWillUpdateが返る前にReactコンポーネントの更新をトリガーする何か他の操作(例えばreduxアクションのディスパッチ)もしないでください。小道具の変更に対応して状態を更新する必要がある場合は、componentWillReceiveProps()を使用します。 – HyeonJunOh
私はこれがあなたを助けてくれることを願っています。 – HyeonJunOh