2016-11-23 22 views
5

Şu anda ReactJS + Material-UI ürününü kullanıyorum ve Materyal-UI'nin <Table> ile sütun genişliği, içeriğe bağlı olarak otomatik olarak ayarlanır. Geçerli.Yani tüm sütunlarda eşit genişliği zorlar gibi görünüyor, ancak bazı sütunların diğerlerinden daha geniş olmasını istiyorum.ReactJS + Material-UI: Material-UI'nin <TableRow/> sütun genişliği nasıl azaltılır?

<TableRow> 'un sütununun genişliğini keyfi olarak atamanın ve bunun yerine içerik temelinde dinamik olmanın bir yolu var mı?

cevap

5

TableHeaderColumn ve ilgili TableRowColumns stilini ayarlayabilirsiniz. Ben (tıpkı başka demo özel stil sarı ve arka plan rengi) 12 piksel

genişliği ayarlamak Aşağıda jsFiddle çalışma: https://jsfiddle.net/0zh1yfqt/1/

const { 
    Table, 
    TableHeader, 
    TableHeaderColumn, 
    TableBody, 
    TableRow, 
    TableRowColumn, 
    MuiThemeProvider, 
    getMuiTheme, 
} = MaterialUI; 

class Example extends React.Component { 
    render() { 
    const customColumnStyle = { width: 12, backgroundColor: 'yellow' }; 

    return (
     <div> 
     <Table> 
      <TableHeader> 
      <TableRow> 
       <TableHeaderColumn>A</TableHeaderColumn> 
       <TableHeaderColumn style={customColumnStyle}>B</TableHeaderColumn> 
       <TableHeaderColumn>C</TableHeaderColumn> 
      </TableRow>    
      </TableHeader> 
      <TableBody> 
      <TableRow> 
       <TableRowColumn>1</TableRowColumn> 
       <TableRowColumn style={customColumnStyle}>2</TableRowColumn> 
       <TableRowColumn>3</TableRowColumn> 
      </TableRow> 
      <TableRow> 
       <TableRowColumn>4</TableRowColumn> 
       <TableRowColumn style={customColumnStyle}>5</TableRowColumn> 
       <TableRowColumn>6</TableRowColumn> 
      </TableRow> 
      <TableRow> 
       <TableRowColumn>7</TableRowColumn> 
       <TableRowColumn style={customColumnStyle}>8</TableRowColumn> 
       <TableRowColumn>9</TableRowColumn> 
      </TableRow> 
      </TableBody> 
     </Table> 
     </div> 
    ); 
    } 
} 

const App =() => (
    <MuiThemeProvider muiTheme={getMuiTheme()}> 
    <Example /> 
    </MuiThemeProvider> 
); 

ReactDOM.render(
    <App />, 
    document.getElementById('container') 
); 
+0

@ ama bu kodlanmış genişlik, doğru mu? İçeriğe göre dinamik olarak değişebilen ancak diğer sütunlardan daha geniş genişliğe sahip olanı arıyordum. –

+0

Ayrıca, whiteSpace: 'nowrap' ve/veya minWidth/maxWidth –

+0

öğelerini de kullanabilirsiniz. –

0

bir gibi davranmaya yapar <Table> bileşende gizli prop vardır

<Table style={{ tableLayout: 'auto' }} fixedHeader={false} ...> 
    ... 
</Table> 

Bu tarz sütunlar tek tek izin vermez, ama en azından küçük içerikleri b iri sütun daha az çirkin: HTML <table> eleman, yani içeriğe sütun genişlikleri adapte y varsayılan.

+0

Bu harika, ancak aynı zamanda tablonun ekranın kenarından taşmasına ve çok geniş hale gelmesi durumunda görünmez hale geldiğinden/pencere çok dar hale geldiğinden de sakının. [Bu konu] 'da daha ilginç bir yorum (https://github.com/callemall/material-ui/issues/1911). –

0

verilen yanıta göre François Zaninotto @Lane Rettig

...

ve bununla ekleyerek, sonsuz sütunlu bir kaydırma tablo elde edebilirsiniz ...

componentDidMount() { 
    let tbody = $(this.refs.table) 
    if (tbody && tbody.length == 1) { 
     let div = tbody[0].refs.tableDiv 
     div.style.overflowX = 'auto' 
     div.parentElement.style.overflowX = 'hidden' 
    } else { 
     // error handling 
    } 
}