HomePageContainers
には、AJAXリクエストのデータを保持し、HomePage
コンポーネントに渡します。 HomePage
コンポーネントは、スクロールをサポートする上位関数InfiniteScroll
によって構成されます。ユーザーが複数のスクロールを実行しないようにする
InfiniteScroll
は次のようになります。
componentDidMount() {
window.addEventListener('scroll', this.onScroll.bind(this), false);
}
componentWillUnmount() {
window.removeEventListener('scroll', this.onScroll.bind(this), false);
}
onScroll() {
if ((window.innerHeight + window.scrollY) >= (document.body.offsetHeight - 200)) {
const { scrollFunc } = this.props;
scrollFunc();
}
}
私はコードは、彼らが1を解雇したら、スクロールを防ぎ、データを要求から到着まで待ちたいです。以下のような何か:
((window.innerHeight + window.scrollY) >= (document.body.offsetHeight - 200)) + //a new condition to make sure only scroll happens when data arrives or fails.
AJAX要求/応答に応じて、その状態を更新するために起こっているscrollFunc
がHomePageContainers
から受信されることに注意してください。
@Igorsveeが述べたようにHomePageContainers
にスクロール状態を保存できますが、その状態をスクロールイベントの処理を担当するInfiniteScroll
コンポーネントに移動したいとします。
どうすればよいですか?
if(this.props.isFetching){
scrollFunc();
}
isFetching
はtrue
時に次のようになります。HomePageContainers
コンポーネントの問題のAjaxリクエストということ、それは状態だと、あなたは新しいisFetching
フラグを追加することができますし、あなたは条件付きでそれを呼び出すことができるようにscrollFunc
と一緒にそれを渡すと仮定
うん、私はそれを行うことができますこの方法。 'HomePageContainers'はデータを扱うためのものです。したがって、状態はAJAXの応答状態と同じになります。 'HomePageContainers'でデータをスクロールさせることは、スクロールとその動作(私が悪いと感じる)を担当する' InfiniteScroll'を別々に持っているように、良いアイデアを考えていました。 –