2017-03-09 18 views
1

私はリアクションを使用してチャットのようなフェイスブックを構築しようとしています - 右側の列がスクロールしてスレッドのリストを持ち、スレッドの内容とスクロールボトムアップ。リアクション - ページ全体をスクロールせずにフレックスコンテナの底にスクロールする

私はflexを使用してすべての設定をしていますが、デフォルトでは中央の列を下にスクロールすることに固執しています(最新のチャットメッセージを見たいので)。ここでは、実際のコンテナのスニペットは、(私は、ブートストラップリアクト使用しています)です:

<Row > 
    <Col ref={ (node) => { this.cont = node }}> 
           {this._buildThread()}; 
    </Col> 
</Row> 

、ここでは私のComponentDidMountのためのスニペットです:

CONTは、そのコンテナのdivのための参照です
componentDidMount() { 
    MessageStore.addChangeListener(this._onChange); 
    MessageService.getThread(this.props.id, 1000, 1, false); 

    this.cont.scrollTop = this.cont.scrollHeight; 

} 

私のメッセージを保持しています。しかし、何も起こらない - それはスクロールせず、node.scrollTopを設定した後に見ると、0のままである - 不変のようだ。 ご協力いただければ幸いです。ありがとう!

答えて

1

わからないが、私はちょうど似て見える問題があった:レンダリングの一番下までスクロールするには、私はcomponentDidMounttriggerScrollを呼び出して、次のようなものを書くでしょう。したがって、そのscrollTop値は常に、要素のコンテナは、その要素がスクロールしないであろう、要素にフィットするように拡大した場合

.containerIWantToScroll { 
    overflow-y: auto; 
} 

:私の場合はソリューションは、要素自体は、そのコンテナをスクロールしないだろうことを確認しましたゼロ。

+0

ありがとう、これは働いた! – Phoenix20

+0

素晴らしい!私の答えをUpvoteし、それを正しいと印をつけますか? – waterproof

+0

私は試してみました - 私はまだ新しいので、まだそれが記録されるのに十分な評判はありません。私がすると、私は戻ってきて、もう一度やります。ありがとうございました。 – Phoenix20

0

含まれているコードはいつトリガーしますか?あなたのCSSの詳細について

class App extends React.Component { 
    componentDidMount() { 
     this.triggerScroll(); 
    } 

    triggerScroll() { 
     this.cont.scrollTop = this.cont.scrollHeight; 
    } 

    render() { 
     return (
      <div> 
       <div className='containerIWantToScroll' ref={ (node) => { this.cont = node } }> 
        Content 
       </div> 
      </div> 
     ) 
    } 
} 
+0

私はComponentDidMountでそれをやっています。私はそのメソッドの最後に上にリストしたコードを持っており、refは 'ref = 'cont''と定義されています。私がnode.scrollHeightの値を出力すると正しいと思われる値が返されますが、割り当てがあってもnode.scrollTopは0のままです。興味深いことに、あなたの構文を使用するように変更すると、 'this.cont.scrollHeight'のために未定義になります(しかし、' this.cont'が定義され、適切なオブジェクトです)。 – Phoenix20

+0

あなたが提案した変更を反映するために関連する2つのコードを表示します。 – Phoenix20

+0

私の構文を使用しているとき、奇妙な 'scrollHeight'は未定義です。この質問(http://stackoverflow.com/questions/37620694/how-to-scroll-to-bottom-in-react)に基づいて、最新のメッセージにrefを設定し、 '.scrollIntoView( ) 'それ? – Donald

関連する問題