2017-12-19 3 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

React 노드의 스크롤 위치를 설정하는 방법을 아는 사람이 있습니까?

+0

, 당신이 심판 콜백 구문을 사용하여 정의해야합니다,이를 확인 : https://stackoverflow.com/questions/38093760/how-to- 3793981 # 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; 
    } 
} 
관련 문제