2017-12-19 10 views
0

ReactノードのscrollTopプロパティを設定していません。ReactDOMノードのscrollTopプロパティを設定する方法は?

リストを含むページをナビゲートするときにリストのスクロール位置を復元しようとしています。

componentDidMount() { 
    let prevScrollHeight = Number(localStorage.getItem('listHeight')); 

    if (prevScrollHeight >= 0) { 
     let listNode = ReactDOM.findDOMNode(this.refs.speakersList); 
     listNode.scrollTop = prevScrollHeight; 
    } 
    } 

スクロール高さが正常にローカルストレージに格納されている:

現在、私のコードは次のようです。何がうまくいかない:listNode.scrollTop = prevScrollHeight

どのように私はリアクションノードのスクロール位置を設定することができます知っていますか?

+0

代わりに文字列として、引用文献を定義するので、これを確認し、REFコールバック構文を使用して、それらを定義する必要があります。https://stackoverflow.com/questions/38093760/how-to-アクセスのドミノ要素の中の反応する要素と同等のドキュメントgetelle/38093981#38093981 –

+0

これは手元の問題とはまったく関係がありません以下に掲載)。 – daniel

答えて

0

問題を解明...同じ問題がある場合は、後で参考にしてください。解決策は、スクロールトップを設定していた関数をsetTimeoutに入れることでした。 JavaScriptのイベントループと何か関係があるようで、setTimeoutはキューの後ろに関数を置きます。

の作業コード:

componentDidMount() { 
    setTimeout(this.setScrollTop.bind(this)) 
} 

setScrollTop() { 
    let prevScrollHeight = Number(localStorage.getItem('listHeight')); 

    if (prevScrollHeight >= 0) { 
    let listNode = ReactDOM.findDOMNode(this.refs.speakersList); 
    listNode.scrollTop = prevScrollHeight; 
    } 
} 
関連する問題