2016-08-13 3 views
0

私はEmberの世界から来ているので、この質問が非常に基本的なものであれば謝ります(私は確信しています)。私はウィンドウがスクロールされるたびに状態 "scrollPosition"を設定するコンポーネントを持っています。 "scrollPosition"が0のときにtrueである新しい状態プロパティ "isScrolledToTop"を定義したいと思います。別の状態プロパティに基づいて状態を定義するにはどうすればよいですか?

Emberでは、単純に新しいプロパティを定義し、scrollPositionが変更されたときの状態をチェックしました。これをReactでどのように行うのかについてはあまり確かではありません。私は "componentDidUpdate"を使用することを考えていましたが、これが正しいアプローチではないことは確かです。事前に助けてくれてありがとう!

+0

[React.jsのコンポーネントの更新スタイル]の可能な複製(http://stackoverflow.com/questions/29725828/update-style-of-a-component-onscroll-in-react-js) –

+0

ありがとう、私はこれを以前に見た。これは、イベントリスナーを追加して1つの状態を更新する方法を学習するのに最適でした。 もっと興味深いのはもっと一般的ですが、別の状態が変化したときに1つの状態プロパティを更新するにはどうすればいいですか? –

+0

これはあなたが探している答えではないかもしれませんが、 scrollPosition状態を更新する関数? – azium

答えて

0

「ユーザーがページの一番上にスクロールすると、イベントを発生させるにはどうすればいいですか?」という質問は、onscrollイベントコールバックでこれを行うことです。

あなたはにしたい場合は、異なる何か(例えば、フルサイズヘッダ)スクロール位置がページの上部にあるときには、ロジックは、コンポーネントのrender()方法で行くだろうをレンダリングします。ような何か:ドキュメントの

render() { 
    if (this.state.scrollPosition === 0) { 
    // do something specific to this scenario 
    } 
    return ... 
} 

This partないisScrolledToTopが何であるかである状態で「演算データ」を、置くことを示唆しています。

スクロール位置をトラッキングしている場合、ウィンドウオブジェクトはこれを「状態」に保持します。これはwindow.scrollYです。これをコンポーネントの状態に複製する必要はありません。

関連する問題