2016-11-28 4 views

답변

2

이것은 간단하지 않으며 material-ui의 표가 요구 사항에 가장 적합하지 않을 수 있습니다. 반응 무한 또는 반응 목록과 같은 무한 스크롤 구성 요소를 살펴볼 수 있습니다.

그런데, 나는 조금 실험을했고 물질 UI의 TableBody에서 스크롤 이벤트를 가로채는이 방법을 생각해 냈습니다.

먼저 테이블의 몸 (이 경우의 조부모 요소)에 포함 된 스크롤 DIV에 대한 참조를 캡처 :

<Table height={200}> 
    ... 
    <TableBody 
    ref={ref => { this.viewport = ReactDOM.findDOMNode(ref).parentNode.parentNode; } }> 
    ... 

다음, componentDidMount()에서 onscroll에 대한 이벤트 리스너를 추가 스크롤 할 수있는 div에 대한 이벤트 :

componentDidMount() { 
    this.viewport.addEventListener('scroll', (e) => { 
    console.log(e); 
    }); 
} 
+0

행의 맨 아래로 스크롤하는 방법이 있습니까? 방금 scrollTop을 설정하기 위해 솔루션을 조정하려고했습니다. 하지만 그것은'null '이라는 속성'parentNode '를 읽을 수 없다는 경고를 내게주었습니다. –

1

내 구현에서는 작동하지 않는 첫 번째 해결책을 시도했습니다.

테이블 요소를 작성하고 이름으로 심판을 설정 :

내가이 작업을 사용하여 [email protected][email protected] 가지고 componentDidMount에서

<Table> 
    ... 
    <TableBody ref="table-body"> 
     ... 
    </TableBody> 
</Table> 

을 찾을 DOMNode 사용 ReactDOM.findDOMNode는 :

componentDidMount() { 
    let tableBodyNode = ReactDOM.findDOMNode(this.refs["table-body"]).parentNode.parentNode; 

    tableBodyNode.addEventListener('scroll', (e) => { 
     console.log(e); 
    }); 
} 

이렇게하면 테이블의 스크롤 이벤트를 제공 할 것입니다.

+0

우리가 parentNode.parentNode를 사용하여이 스크롤 리스너를 처리하는 방식이 이상합니다. https://github.com/janpaepke/ScrollMagic을 사용했지만 결국이 문제를 해결할 수있는 좋은 해결책이 아님을 기억합니다. –

관련 문제