2016-11-28 5 views

Antwort

2

Dies ist nicht einfach und vielleicht Material-Ui-Tabelle ist nicht die beste für Ihre Anforderungen. Vielleicht möchten Sie sich einige endlos scrollende Komponenten wie react-infinite oder react-list ansehen.

Das gesagt, experimentierte ich ein bisschen und kam mit dieser Methode des Abfangens des Scroll-Ereignisses in Material-ui's TableBody.

Zuerst einen Verweis auf die scrollbaren div erfassen, die den Körper Ihres Tisch in (seiner Großeltern Element in diesem Fall) enthalten ist:

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

dann in componentDidMount(), fügen Sie einen Ereignis-Listener für die onscroll Ereignis zum scrollbaren div:

+0

Gibt es eine Möglichkeit, bis zum Ende der Zeilen zu scrollen? Ich habe gerade versucht, Ihre Lösung zu optimieren, um scrollTop einzustellen. Aber es gab mir die Warnung, dass 'Eigenschaft 'parentNode' von null nicht lesen kann. –

1

Versuchte die erste Lösung, die nicht mit meiner Implementierung arbeitete.

Ich habe diese Arbeit mit [email protected] und [email protected]:

ein Tabellenelement erstellen und den Referee auf einen Namen festgelegt:

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

In componentDidMount finden der DOMNode, der ReactDOM.findDOMNode verwendet:

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

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

Dadurch erhalten Sie das Bildlaufereignis der Tabelle.

+0

Ist irgendwie komisch die Art, wie wir diese scroll Listeners mit parentNode.parentNode behandeln Ich erinnere mich, dass ich mit https://github.com/janpaepke/ScrollMagic endete, aber immer noch keine gute Lösung, um dieses Problem zu beheben. –

Verwandte Themen