Material-ui: [ν‘œ] ν‘œ μ—΄ λ„ˆλΉ„ μ„€μ •

에 λ§Œλ“  2015λ…„ 10μ›” 19일  Β·  54μ½”λ©˜νŠΈ  Β·  좜처: mui-org/material-ui

ν…Œμ΄λΈ” μ—΄μ˜ λ„ˆλΉ„λ₯Ό μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

DataGrid question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚΄ 바닐라 HTML ν…Œμ΄λΈ”μ—μ„œ μ—΄ λ„ˆλΉ„λŠ” λ‚΄μš©μ— 따라 μžλ™μœΌλ‘œ μ„€μ •λ©λ‹ˆλ‹€. material-uiλŠ” λͺ¨λ“  열에 λ™μΌν•œ λ„ˆλΉ„λ₯Ό μ μš©ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 바닐라 HTML ν…Œμ΄λΈ”μ²˜λŸΌ μ—΄ λ„ˆλΉ„λ₯Ό λ™μ μœΌλ‘œ μ„€μ •ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

λͺ¨λ“  54 λŒ“κΈ€

+1

이것에 λŒ€ν•΄ νŠΉλ³„ν•œ 것은 μ—†μŠ΅λ‹ˆλ‹€.

const colWidth {
    width: '2rem'
};

<TableRowColumn style={ colWidth }>
    ...
</TableRowColumn>
<TableRowColumn style={{ width: 100 }}>

TableHeaderColumn λ„ˆλ¬΄ 잘 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ½˜ν…μΈ λ₯Ό 기반으둜 col의 λ„ˆλΉ„λ₯Ό λ™μ μœΌλ‘œ ν• λ‹Ήν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

λ‚΄ 바닐라 HTML ν…Œμ΄λΈ”μ—μ„œ μ—΄ λ„ˆλΉ„λŠ” λ‚΄μš©μ— 따라 μžλ™μœΌλ‘œ μ„€μ •λ©λ‹ˆλ‹€. material-uiλŠ” λͺ¨λ“  열에 λ™μΌν•œ λ„ˆλΉ„λ₯Ό μ μš©ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 바닐라 HTML ν…Œμ΄λΈ”μ²˜λŸΌ μ—΄ λ„ˆλΉ„λ₯Ό λ™μ μœΌλ‘œ μ„€μ •ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

@sanfilippopablo , <Table> λŠ” table-layout: 'fixed' css prop을 μ‚¬μš©ν•˜μ—¬ μ˜€λ²„ν”Œλ‘œλ₯Ό μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ λͺ¨λ“  ν…Œμ΄λΈ” μ…€μ—μ„œ white-space: 'nowrap' 와 κ²°ν•© 된 λ„ˆλΉ„κ°€ λ™μΌν•œ λͺ¨λ“  열을 λ§Œλ“­λ‹ˆλ‹€.

μœ„μ—μ„œ μ–ΈκΈ‰ ν•œ 곡백 CSS μ†Œν’ˆμ„ μ œκ±°ν•˜μ§€ μ•ŠλŠ” ν•œ ν…Œμ΄λΈ”μ΄ λ‚΄μš©κ³Ό ν•¨κ»˜ λ¬΄ν•œνžˆ 컀지기 λ•Œλ¬Έμ— table-layout: 'auto' μ•ˆμ „ν•˜κ²Œ μ „ν™˜ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œν•˜λ©΄
헀더가 λ³„λ„μ˜ ν…Œμ΄λΈ” : cry :에 ν¬ν•¨λ˜λ―€λ‘œ 더 이상 fixedHeader={true} prop을 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€ .

일뢀 μ˜κ²¬μ„ μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

μ—΄μ˜ λ„ˆλΉ„λ₯Ό μ„€μ •ν•˜κΈ° μœ„ν•΄ λ‚΄κ°€ ν•œ 일은

μŠ€νƒ€μΌ, ν…Œμ΄λΈ” λ ˆμ΄μ•„μ›ƒμ„ μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ“―μ΄ μžλ™μœΌλ‘œ μ„€μ • ν•œ λ‹€μŒ 열에 λ„ˆλΉ„λ₯Ό λ°±λΆ„μœ¨λ‘œ μ§€μ •ν•©λ‹ˆλ‹€. μ¦‰λ„ˆλΉ„ 30 % λ°λ„ˆλΉ„ 70 %. 이것은 헀더가 μ•„λ‹Œ 첫 번째 열에 ν…Œμ΄λΈ” 헀더 μ—΄μ΄μžˆλŠ” 2 μ—΄ λ ˆμ΄μ•„μ›ƒ μ˜ˆμ œμž…λ‹ˆλ‹€.

ν…Œμ΄λΈ” λ ˆμ΄μ•„μ›ƒ : 'μžλ™'으둜 μ•ˆμ „ν•˜κ²Œ μ „ν™˜ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 그러면 ν…Œμ΄λΈ”μ΄ λ‚΄μš©κ³Ό ν•¨κ»˜ λ¬΄ν•œνžˆ 컀지기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

tableRowColumn λ„ˆλΉ„κ°€ λ‚΄μš©μ— 따라 λ³€κ²½ 될 λ•Œ ν…Œμ΄λΈ” 헀더 λ„ˆλΉ„λ₯Ό μ‘°μ •ν•˜λŠ” 것은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ?
λ‚˜λŠ” 그것을 μ„€μ •ν•  수 μ—†μ–΄μ„œ κ·Έ 2κ°€ μ •λ ¬λ©λ‹ˆλ‹€.

λ‚˜λŠ” 당신이 fixedHeader={true} ν•˜κ³  μ‚¬μš©μž μ •μ˜ λ„ˆλΉ„λ₯Ό μ„€μ •ν•  수 μ—†κ±°λ‚˜ 헀더λ₯Ό <TableBody> μ•ˆμ— λ³΄κ΄€ν•΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ’‹μ•„, tbody에 헀더λ₯Ό λ„£λŠ” 것이 μž‘λ™ν•©λ‹ˆλ‹€! 이제 μ—¬λŸ¬ 쀄 헀더 열을 μˆ˜ν–‰ν•˜λŠ” 방법을 μ•Œμ•„ λ‚΄μ•Όν•©λ‹ˆλ‹€. 팁이 μžˆμŠ΅λ‹ˆκΉŒ?

당신은 같은 것을 λ‹¬μ„±ν•˜λ €κ³  이 ? (μ•„λ‹ˆλΌλ©΄μ΄ μ›Ή μ‚¬μ΄νŠΈμ—μ„œ μ˜¬λ°”λ₯Έ 예λ₯Ό 찾을 μˆ˜μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.)

TableHeaderColumn colSpan TableHeaderColumn 및 TableRowColumn 및 TableRow rowSpan μ†μ„±μœΌλ‘œ μ›ν•˜λŠ” λͺ¨λ“  μž‘μ—…μ„ μˆ˜ν–‰ ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

이해가 μ•ˆ λΌμš”-μ™œ λ‹«ν˜€ μžˆλ‚˜μš”?

TableBody에 TableHeaderλ₯Ό λ„£λŠ” 것은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λΏ‘λΏ‘
μš°λ¦¬κ°€ μ œμ•ˆν•œ 것은 tableBody에 tableheader μ—­ν• μ„ν•˜λŠ” tableRowλ₯Ό λ„£λŠ” κ²ƒμž…λ‹ˆλ‹€.
ν•˜μ§€λ§Œ μ§€κΈˆμ€ 잘 μž‘λ™ν•˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.

이것은 μ§€κΈˆ λ‚΄ μ½”λ“œμ—μ„œ μ–΄λ–»κ²Œ λ³΄μ΄λŠ”μ§€μž…λ‹ˆλ‹€.

<Table fixedHeader={true}>
          <TableHeader>
            <TableHeaderComponent schema={schema}/>
          </TableHeader>
          <TableBody displayRowCheckbox={false} showRowHover={true}>
            {this.props.data.map((item, index) => (
              <TableRowComponent key={index} schema={this.props.schema}
                item={item} onRemoveClick={this.handleRemoveItem}
                onEditClick={this.handleEditItem}
              />
            ))}
          </TableBody>
</Table>

및 헀더 열이 λ³Έλ¬Έ μ—΄κ³Ό μ˜¬λ°”λ₯΄κ²Œ μ •λ ¬λ©λ‹ˆλ‹€.

λŒ€λ‹΅ ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. TableHeaderComponent λ‚΄λΆ€μ—λŠ” 무엇이 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” 그것이 일반적인 TableHeader와 같지 μ•Šλ‹€κ³  μƒκ°ν•œλ‹€.
```

νƒ€μž„ μŠ€νƒ¬ν”„

예, 이유 λ•Œλ¬Έμ— 포μž₯λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이것에 λŒ€ν•œ μ†Œμ‹μ΄ μžˆμŠ΅λ‹ˆκΉŒ? 열이 λ‚΄μš©μ— 맞게 μžλ™ μ‘°μ •λ˜λ„λ‘ν•˜λ €λ©΄ μ–΄λ–»κ²Œν•΄μ•Όν•©λ‹ˆκΉŒ?

이것은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜λ©° μžλ™ 크기 μ‘°μ • :

      <Table style={{tableLayout: 'auto'}}>

@arjan

 <Table style={{tableLayout: 'auto'}}>

이것은 헀더에 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

<Table fixedHeader={false} style={{ tableLayout: 'auto' }}> μž‘λ™ν•©λ‹ˆλ‹€ (μ½˜ν…μΈ μ— 따라 동적 크기 μ‘°μ •).

width: "auto" λ₯Ό μΆ”κ°€ν•΄μ•Όν–ˆλŠ”λ° κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

<Table fixedHeader={false} style={{ width: "auto", tableLayout: "auto" }}>

@nathanmarks , λ‹€μ‹œμ—¬μ‹­μ‹œμ˜€.

Table μ—λŠ” μ½˜ν…μΈ μ˜ 크기λ₯Ό μžλ™μœΌλ‘œ μ‘°μ •ν•  μˆ˜μžˆλŠ” κΈ°λ³Έ 속성이 μžˆμ–΄μ•Όν•˜λ©° fixedHeader λΉ„ν™œμ„±ν™” ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. 더 λ‚˜μ•„κ°€μ„œ λ‚΄μš©μ— μžλ™ 크기 쑰정이 κΈ°λ³Έ λ™μž‘μ΄μ–΄μ•Όν•œλ‹€κ³  말할 κ²ƒμž…λ‹ˆλ‹€.

@devuxer μ£„μ†‘ν•©λ‹ˆλ‹€. v0.x λΈŒλžœμΉ˜μ— κΈ°λŠ₯을 사전에 μΆ”κ°€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@mbrookes , μ•Œλ € μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. v1.x의 ν…Œμ΄λΈ”μ΄μ΄ 문제λ₯Ό ν•΄κ²°ν•œλ‹€κ³  λ§μ”€ν•˜μ‹œλŠ” κ±΄κ°€μš”?

μ„Έ 개의 μ—΄μ΄μžˆλŠ” ν…Œμ΄λΈ”μ΄ μžˆλŠ”λ° 첫 번째 μ—΄κ³Ό μ„Έ 번째 μ—΄μ—λŠ” 항상 적은 μ–‘μ˜ ν…μŠ€νŠΈκ°€ ν¬ν•¨λ©λ‹ˆλ‹€. 두 번째 열이 κ³΅κ°„μ˜ λŒ€λΆ€λΆ„μ„ μ°¨μ§€ν•˜μ—¬ 첫 번째 μ—΄κ³Ό μ„Έ 번째 열이 각각 ν…Œμ΄λΈ”μ˜ μ™Όμͺ½κ³Ό 였λ₯Έμͺ½ κ°€μž₯자리둜 λ°€λ €λ‚˜ κΈΈ μ›ν–ˆμŠ΅λ‹ˆλ‹€. 이것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€ (간결성을 μœ„ν•΄ className λŒ€μ‹  style ).

<Table style={{ tableLayout: "auto" }} />
<TableRowColumn style={{ width: "10%" }}>{text}</TableRowColumn>
<TableRowColumn style={{ width: "80%" }}>{text}</TableRowColumn>
<TableRowColumn style={{ width: "10%" }}>{text</TableRowColumn>

더 λ‚˜μ€ 해결책을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λͺ¨λ“  μ—΄μ˜ λ„ˆλΉ„κ°€ λ™μΌν•©λ‹ˆλ‹€.
μ„Έ 개의 열이 있고 첫 번째 열이 전체 λ„ˆλΉ„μ˜ μ ˆλ°˜μ„ μ°¨μ§€ν•˜κ³  μ„Έ 번째 열이 ν–‰μ˜ μ•½ 1/3μ΄λ˜μ–΄μ•Όν•œλ‹€κ³  κ°€μ • ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. μ€‘κ°„μ—μžˆλŠ” 것이 κ°€μž₯ μž‘μ€ κ²ƒμž…λ‹ˆλ‹€.

  <TableRowColumn colSpan='3'>twice as big!</TableRowColumn>
  <TableRowColumn> I'm small</TableRowColumn>
  <TableRowColumn colSpan='2'>I'm in between</TableRowColumn>

μ‹€μ œλ‘œ 7 개의 열이 μžˆμ§€λ§Œ λ‚΄ colspan의 ν•©κ³„λŠ” 20μž…λ‹ˆλ‹€. λ§ˆμ§€λ§‰ μ—΄μ—λŠ” μ‚­μ œ μ•„μ΄μ½˜ 만 있고 λ‹€λ₯Έ μ—΄μ˜ λŒ€λΆ€λΆ„μ€ colspan 3μž…λ‹ˆλ‹€. 큰 ν…μŠ€νŠΈ ν•„λ“œλŠ” colspan 6이고 selectfield와 datepickerλŠ” colspan 2μ—μ„œ ...

맀λ ₯처럼 μž‘λ™ν•©λ‹ˆλ‹€!

이것은 v1.4.3에 λ“€μ–΄κ°€λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

const styles = { 
    narrowCell: {
        'width': '150px',
    }
};

<Table>
    <TableHead>
        <TableRow>
            <TableCell>Company Name</TableCell>
            <TableCell className={classes.narrowCell} numeric>Amount</TableCell>
        </TableRow>
    </TableHead>
    <TableBody>
    <TableRow>
        <TableCell> name 1 </TableCell>
        <TableCell className={classes.narrowCell}> $100 </TableCell>
    </TableRow>
    </TableBody>
</Table>


λ˜ν•œ λ°±λΆ„μœ¨ λ„ˆλΉ„λ₯Ό 제곡 ν•  수 있으며 λ‚˜λ¨Έμ§€ 셀은 λ™μΌν•˜κ²Œ ν™•μž₯λ©λ‹ˆλ‹€.

TableHead ν–‰μ—μ„œ colspan={2} 을 μ‚¬μš©ν•΄μ•Όν•˜λŠ” 경우이 μ†”λ£¨μ…˜μ„ μ–΄λ–»κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

colspan={2} μΆ”κ°€ν•˜λ©΄ λͺ¨λ“  μ—΄μ˜ λ„ˆλΉ„κ°€ λ™μΌν•©λ‹ˆλ‹€. 이 같은:

const styles = { 
    narrowCell: {
        'width': '150px',
    },
    miniCell: {
        'width': '75px',
    },
};

<Table>
    <TableHead>
        <TableRow>
            <TableCell>Company Name</TableCell>
            <TableCell className={classes.narrowCell} numeric colspan={2}>Amounts</TableCell>
        </TableRow>
    </TableHead>
    <TableBody>
    <TableRow>
        <TableCell> name 1 </TableCell>
        <TableCell className={classes.miniCell}> $100 </TableCell>
        <TableCell className={classes.miniCell}> $100 </TableCell>
    </TableRow>
    </TableBody>
</Table>

@Bowfish colspan = {2} μ…€ λ„ˆλΉ„λ₯Ό λ³€κ²½ν•˜λ €λ©΄ 전체 ν‘œμ— κ±Έμ³μžˆλŠ” ν‘œ λ„ˆλΉ„λ₯Ό λ³€κ²½ν•΄λ³΄μ‹­μ‹œμ˜€. μž‘μ€ 셀은 κ°œλ³„μ μœΌλ‘œ μ‘°μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이 μŠ€νƒ€μΌμ„ μ μš©ν•˜λ©΄ λ„μ›€μ΄λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
λ‚˜λŠ” ν–‰μ˜ λ‹€λ₯Έ 셀에 λŒ€ν•΄ λ‹€λ₯Έ maxWidth λ₯Ό μ•‰μ•˜μ§€λ§Œ 인라인 μŠ€νƒ€μΌμ„ μ‚¬μš©ν•˜μ—¬ 각 μ—΄μ—μ„œ λ™μΌν•©λ‹ˆλ‹€.

const styles = (theme) => ({
  tableCell: {
    whiteSpace: 'nowrap',
    overflow: 'hidden',
    textOverflow: 'ellipsis',
    maxWidth: '40px',
  },
});

μœ„μ— κ²Œμ‹œ 된 μ†”λ£¨μ…˜ 쀑 μ–΄λŠ 것도 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것이 λ‹¬μ„±ν•˜κΈ° μ–΄λ €μš΄ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

  <Table fixedHeader={false} style={{tableLayout: "auto" }}>
        <colgroup>
            <col width="250px" />
            <col />
            <col width="40px" />
            <col width="40px" />
        </colgroup>
        <TableHead>
          <TableRow>

두 번째 μ½œλŸΌμ€ ν”Œλ ‰μŠ€μž…λ‹ˆλ‹€

λˆ„κ΅¬λ“ μ§€ μ—¬μ „νžˆ 이것에 λ¬Έμ œκ°€ μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ κ²°κ΅­ withStylesλ₯Ό μ‚¬μš©ν•˜κ²Œλ˜μ—ˆκ³  여기에 μ˜μ‚¬ μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

import {withStyles} from '@material-ui/core/styles';  

const styles = theme => ({
    cell: {
        width:'20%'
    },
    cellLarge: {
        width:'60%'
    } 
});

<Table >
       <TableHead>
               <TableRow>
                        <TableCell className={this.props.classes.cell}>header 1</TableCell>
                         <TableCell className={this.props.classes.cell}>header 2</TableCell>
                         <TableCell className={this.props.classes.cellLarge}>header 3</TableCell>
                </TableRow>
          </TableHead>
                <TableBody>
                        <TableRow>
                            <TableCell>value 1</TableCell>
                            <TableCell>value 2</TableCell>
                            <TableCell>value 3</TableCell>
                        </TableRow>
               </TableBody>
   </Table>

export default withStyles(styles)({ComponentName})

μœ„μ— κ²Œμ‹œ 된 μ†”λ£¨μ…˜ 쀑 μ–΄λŠ 것도 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 이것이 λ‹¬μ„±ν•˜κΈ° μ–΄λ €μš΄ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

TableHead λ˜λŠ” TableBody λŒ€ν•΄μ„œλ§Œ width 만 μ„€μ •ν–ˆκΈ° λ•Œλ¬Έμ— μ–΄λ–»κ²Œν•΄μ„œ μž‘λ™ν•˜μ§€ μ•ŠλŠ”μ§€ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€! μ œλŒ€λ‘œ μž‘λ™ν•˜λ €λ©΄ TableHead 및 TableBody TableCell 에 minWidth 및 maxWidth 봇을 μ •μ˜ν•΄μ•Όν•©λ‹ˆλ‹€. 여기에 μ˜ˆμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

<Table>
    <TableHead>
        <TableRow>
            <TableCell column='data1' style={{minWidth:100, maxWidth:100}}>{content}</TableCell>
            <TableCell column='data2' style={{minWidth:'200px', maxWidth:'200px'}}>{content}</TableCell>
        </TableRow>
    </TableHead>
    <TableBody>
            <TableRow>
            <TableCell column='data1' style={{minWidth:100, maxWidth:100}}>{content}</TableCell>
            <TableCell column='data2' style={{minWidth:200, maxWidth:200}}>{content}</TableCell>
            </TableRow>
    </TableBody>
</Table>

λ³΄μ‹œλ‹€μ‹œν”Ό μ •μˆ˜μ™€ λ¬Έμžμ—΄λ‘œ μŠ€νƒ€μΌ 값을 λͺ¨λ‘ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ λ¬Έμžμ—΄μ˜ 경우 px μ •μ˜ν•œ 경우 μ—λ§Œ μž‘λ™ ν•˜κ³ , minWidth:'25%' 와 같은 λ°±λΆ„μœ¨μ„ μ‚¬μš©ν•˜λ©΄ μž‘λ™ν•˜μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€. 이미 μ‹œλ„ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

minWidth 및 maxWidth λͺ¨λ‘ μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? width μ•„λ‹™λ‹ˆκΉŒ? λ‚˜λŠ” 이미 그것을 μ‹œλ„ν•˜κΈ° λ•Œλ¬Έμ— κ³ μ • λ„ˆλΉ„μ™€ 열을 ν™•μΈν•˜λ €λ©΄, 당신은 μ‚¬μš©ν•΄μ•Ό minWidth 및 maxWidth λŒ€μ‹  width . 이유λ₯Ό λͺ°λžμ§€λ§Œ width 이이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 λ„μ›€μ΄λ˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

μ°Έκ³  :의 _Both TableCell μ—μ„œ TableHead 및 TableBody 같은 데이터λ₯Ό ν¬ν•¨ν•˜λŠ”, 같은 μŠ€νƒ€μΌμ΄ μžˆμ–΄μ•Όν•©λ‹ˆλ‹€ _!

이 μ½”λ“œκ°€ μ—¬λŸ¬λΆ„μ—κ²Œ λ„μ›€μ΄λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

λ‚˜λŠ” 말 κ·ΈλŒ€λ‘œ width : 10 %, minWidth : 10 % 및 maxWidth : 10 %λ₯Ό ν…Œμ΄λΈ” 헀더 μ•„λž˜μ˜ 것을 ν¬ν•¨ν•˜μ—¬ λͺ¨λ“  단일 TableCell에 μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. 그런 λ‹€μŒ κ³„μ†ν•΄μ„œ <colgroup>..etc μš”μ†Œλ₯Ό λ§Œλ“€κ³  λ™μΌν•œ μŠ€νƒ€μΌμ„ μ μš©ν–ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ Table μš”μ†Œλ₯Ό tableLayout : auto 및 width : auto둜 μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. 이 μŠ€λ ˆλ“œμ—μ„œ λͺ¨λ“  단일 μ†”λ£¨μ…˜μ„ μ‹œλ„ν•˜κ³  λͺ¨λ‘μ΄ ν•˜λ‚˜μ˜ μ΅œμ’… 좜λ ₯에 κ²°ν•©ν–ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ ν¬λ‘¬μ—μ„œ "μš”μ†Œ 검사"도ꡬλ₯Ό μ‚¬μš©ν•˜κ³  ν…Œμ΄λΈ”μ˜ λͺ¨λ“  단일 μš”μ†Œλ₯Ό ν•΄ν‚Ήν•˜μ—¬ λ„ˆλΉ„ : 10 % μ΅œμ†Œ λ„ˆλΉ„ : 10 % 및 μ΅œλŒ€ λ„ˆλΉ„ : 10 %λ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. 이것은 devtools의 React inspecter에도 λ°˜μ˜λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 말 κ·ΈλŒ€λ‘œ λͺ¨λ“  μš”μ†Œκ°€ "λ„ˆλΉ„ 10 %"λ“±μœΌλ‘œ λ³€κ²½λœ 것을 λ³΄μ—¬μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

κ²°κ³Ό : μ—¬μ „νžˆ μ—΄ λ„ˆλΉ„λ₯Ό μ‘°μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ‹€μ œλ‘œ λΆˆκ°€λŠ₯ν•œ 것이 μ‘΄μž¬ν•œλ‹€κ³  κ°€μ •ν•˜λŠ” 것이 μ•ˆμ „ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ°”λ‘œμ΄ 싀에 μžˆμŠ΅λ‹ˆλ‹€

νŽΈμ§‘ν•˜λ‹€:

λ‚˜λŠ” μ‹€μ œλ‘œμ΄ μŠ€λ ˆλ“œμ˜ μ‚¬λžŒλ“€μ΄ μ œμ•ˆν•œ 것에 λ°˜ν•˜λŠ” 일을 λλ‚΄κ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€ ... λ‚˜λŠ” autoLayout을 μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€ : λ‚΄ ν…Œμ΄λΈ”μ— κ³ μ •λ˜κ³  μž‘λ™ν•˜κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€. 이 흑 λ§ˆλ²•μ€ λ„λŒ€μ²΄ 뭐야

λ˜ν•œ λ„ˆλΉ„λ₯Ό μ„€μ •ν•˜λŠ” 데 λ‚˜μœ μ‹œκ°„μ„ 보내고 μžˆμŠ΅λ‹ˆλ‹€. 선택 ν™•μΈλž€ λ„ˆλΉ„λ₯Ό μ„€μ •ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€ : μ μ ˆν•œ λ„ˆλΉ„λ₯Ό μœ μ§€ν•˜λ €λ©΄ 0.01 %, λ‹€λ₯Έ 것은 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ΄κ²ƒμ˜ 이전 버전에 κ°‡ν˜€ 있고 λ°”λ‹₯ κΈ€λ‘œ 어렀움을 κ²ͺλŠ” μ‚¬λžŒλ“€μ„ μœ„ν•΄ fixedFooter = {false}λ₯Ό @devenovil 의 μ†”λ£¨μ…˜μ— μΆ”κ°€ν•˜λ©΄ μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

@nathanmarks 적어도 이것을 닫은 이유λ₯Ό λͺ…ν™•νžˆ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?
이것은 맀우 반볡적 인 ν•„μˆ˜ κΈ°λŠ₯μ΄μ–΄μ•Όν•©λ‹ˆλ‹€.

@pbassut 이 λ§žμŠ΅λ‹ˆλ‹€. 이것은 ν…Œμ΄λΈ” ꡬ성 μš”μ†Œμ˜ 맀우 기본적인 κΈ°λŠ₯μž…λ‹ˆλ‹€. μ—…λ°μ΄νŠΈκ°€ μžˆμŠ΅λ‹ˆκΉŒ?
λ˜λŠ” κ΅¬ν˜„ν•˜λŠ” 것이 μ™œ κ·Έλ ‡κ²Œ λ¬Έμ œκ°€λ˜λŠ”μ§€ μ„€λͺ… ...

@devenovil maxWidth λŒ€μ‹  % λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 width μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

<TableCell style={{ width: '35%' }}>
  Table Data
</TableCell>
<TableCell>
  Another Table Data
</TableCell>

λ‚˜λ₯Ό μœ„ν•΄ 그것은 ν—€λ”μ˜ 셀에 λŒ€ν•΄μ„œλ§Œ λ„ˆλΉ„λ₯Ό μ„€μ •ν•˜λ„λ‘ λ…Έλ ₯ν–ˆμŠ΅λ‹ˆλ‹€ : <TableCell width={props.colWidths[index] + '%'}> , 이둜 인해 전체 ν…Œμ΄λΈ”μ˜ 열이 μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

λ°±λΆ„μœ¨λ‘œ μ—΄ λ„ˆλΉ„λ₯Ό μ„€μ •ν•˜κ³  μΌμ’…μ˜ μž‘λ™ν•˜μ§€λ§Œ μ–΄λ–€ 이유둜 맨 였λ₯Έμͺ½μ— νŒ¬ν…€ 열을 μΆ”κ°€ν•©λ‹ˆλ‹€. μš”μ†Œ 검사λ₯Ό 톡해 "TableStubCell"μš”μ†Œλ₯Ό ν…Œμ΄λΈ”μ— μΆ”κ°€ν•˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. λ‚˜λŠ” 그것이 μ–΄λ””μ„œ μ™”λŠ”μ§€ μ „ν˜€ λͺ¨λ₯Έλ‹€.

λ‹€λ₯Έ MUI ν…Œμ΄λΈ”μ—μ„œ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ λ°œμƒν–ˆμœΌλ©° ν•΄κ²° 방법이 그닀지 ν›Œλ₯­ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λͺ¨λ‘κ°€μ΄ 문제λ₯Ό μ—΄μ–΄ 고치면 λ©‹μ§ˆ κ²ƒμž…λ‹ˆλ‹€ ... λΆ„λͺ…νžˆ λ‹€λ₯Έ μ‚¬λžŒλ“€λ„μ΄ 문제둜 어렀움을 κ²ͺκ³  μžˆμŠ΅λ‹ˆλ‹€.

νŽΈμ§‘ : TableStubCell은 dx-react-grid-material-ui npm νŒ¨ν‚€μ§€μ—μ„œ μ™”μœΌλ―€λ‘œ 손가락을 κ°€λ¦¬ν‚€λŠ” 것에 λŒ€ν•΄ μ£„μ†‘ν•©λ‹ˆλ‹€!

λ‚΄ 해결책은

<Table>
  <TableHeader>
    <TableRow>
      <TableCell>
        <Box width="200px">
          User Fullname
        </Box>
      </TableCell>
      {/* ...rest of the columns */}
    </TableRow>
  </TableHeader>
  <TableBody>
    <TableRow>
      <TableCell>
        April Mintac Pineda
      </TableCell>
      {/* ...rest of the columns */}
    </TableRow>
    {/* ...rest of the rows */}
  </TableBody>
</Table>

ν•˜μ§€λ§Œ μš°λ¦¬κ°€ ν•  수 μžˆλ‹€λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€.

<Table>
  <TableHeader>
    <TableRow>
      <TableCell width="200px">
        User Fullname
      </TableCell>
      {/* ...rest of the columns */}
    </TableRow>
  </TableHeader>
  <TableBody>
    <TableRow>
      <TableCell>
        April Mintac Pineda
      </TableCell>
      {/* ...rest of the columns */}
    </TableRow>
    {/* ...rest of the rows */}
  </TableBody>
</Table>

이것은 버전 "@material-ui/core": "4.9.0" μ—μ„œ μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

<TableContainer className={classes.container}>
          <Table className={classes.table} stickyHeader size="small">
            <TableHead>
              <TableRow>
                <TableCell width="30%">User Name</TableCell>
                <TableCell width="20%">Designation</TableCell>
                <TableCell width="10%">Nid</TableCell>
                <TableCell width="20%">Email</TableCell>
                <TableCell width="10%">Mobile</TableCell>
                <TableCell width="10%">Gender</TableCell>
              </TableRow>
            </TableHead>
            <TableBody>
              {props.isGridLoading && (
                <TableRow>
                  <TableCell colSpan={6}>
                    <LoadingGridSpinner open={props.isGridLoading} />
                  </TableCell>
                </TableRow>
              )}

              {props.profileObj.lists &&
                props.profileObj.lists.map(row => (
                  <TableRow key={row.userProfileId} hover={true}>
                    <TableCell width="30%">
                      {row.userName}
                    </TableCell>
                    <TableCell width="20%">{row.designation}</TableCell>
                    <TableCell width="10%">{row.nid}</TableCell>
                    <TableCell width="20%">{row.email}</TableCell>
                    <TableCell width="10%">{row.mobile}</TableCell>
                    <TableCell width="10%">{row.gender}</TableCell>
                  </TableRow>
                ))}
            </TableBody>
          </Table>

@nazrulcsebd 및 @crizantκ°€ μ‚¬μš©ν•œ μ ‘κ·Ό 방식이 μ €μ—κ²Œ

<TableContainer component={Paper} style={{ marginTop: 10 }}>
          <Table style={{ width: 'auto', tableLayout: 'auto' }}>
          <TableHead>
            <TableRow>
              <TableCell>Team Member</TableCell>
              <TableCell align="left">Level</TableCell>
              <TableCell align="left">Last Login</TableCell>
            </TableRow>
          </TableHead>
          <TableBody>
            { tableArray.map(({ id, name, accessLevel, login }) => (
              <TableRow key={id}>
                <TableCell component="th" scope="row" style={{ width: '35%' }}>
                  {name}
                </TableCell>
                <TableCell align="left">{accessLevel}</TableCell>
                <TableCell align="left">{login}</TableCell>
              </TableRow>
            ))
          }
          </TableBody>
        </Table>
      </TableContainer>

제 κ²½μš°μ—λŠ” ν…Œμ΄λΈ” 끝에 "μ•‘μ…˜"λ²„νŠΌμ„ 넣을 μˆ˜μžˆλŠ” κ°€μž₯ μž‘μ€ 열을 μ›ν–ˆμŠ΅λ‹ˆλ‹€. TableHead의 TableCell에 style={{ width: 1 }} 을 μΆ”κ°€ν•˜λ©΄ 트릭이 λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

        <TableContainer component={Paper}>
            <Table className={classes.table} aria-label="simple table">
                <TableHead>
                    <TableRow>
                        {header.map((th, i) => (
                            <TableCell key={i}>{th}</TableCell>
                        ))}
                        <TableCell style={{ width: 1 }}>actions</TableCell>
                    </TableRow>
                </TableHead>
                <TableBody>
                    {data.map((row, i) => (
                        <TableRow key={i} hover>
                            {header.map((h, i) => (
                                <TableCell key={i} align="left">{row[h]}</TableCell>
                            ))}
                            <TableCell>
                                <IconButton aria-label="edit">
                                    <MoreHorizIcon fontSize="small" />
                                </IconButton>
                            </TableCell>
                        </TableRow>
                    ))}
                </TableBody>
            </Table>
        </TableContainer>
const useStyles = makeStyles(theme => ({
  table: {
    "& tr:nth-child(2), & td:nth-child(2) {
      width: '32px',
    }
  }
}));

그런 λ‹€μŒ ν…Œμ΄λΈ”μ˜ λ£¨νŠΈμ—μžˆλŠ” μŠ€νƒ€μΌμ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

 <Table
     ....
     className={classes.table}
>

아직 많이 ν…ŒμŠ€νŠΈν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€ (κ³ μ • 헀더 λ“±).

예λ₯Ό λ“€μ–΄ ν…Œμ΄λΈ”μ— λ™μΌν•œ 12 개 μ—΄ μ‹œμŠ€ν…œμ„ 제곡 ν•  수 μžˆλ‹€λ©΄ 훨씬 더 쒋을 κ²ƒμž…λ‹ˆλ‹€.

   <TableContainer component={Paper}>
      <Table className={classes.table} aria-label="simple table">
        <TableHead>
          <TableRow>
            <TableCell>Dessert (100g serving)</TableCell>
            <TableCell align="right">Calories</TableCell>
            <TableCell align="right">Fat&nbsp;(g)</TableCell>
            <TableCell align="right">Carbs&nbsp;(g)</TableCell>
            <TableCell align="right">Protein&nbsp;(g)</TableCell>
          </TableRow>
        </TableHead>
        <TableBody>
          {rows.map((row) => (
            <TableRow key={row.name}>
              <TableCell component="th" scope="row" xs={4}>
                {row.name}
              </TableCell>
              <TableCell align="right" xs={2}>{row.calories}</TableCell>
              <TableCell align="right" xs={2}>{row.fat}</TableCell>
              <TableCell align="right" xs={2}>{row.carbs}</TableCell>
              <TableCell align="right" xs={2}>{row.protein}</TableCell>
            </TableRow>
          ))}
        </TableBody>
      </Table>
    </TableContainer>

열이 λ„ˆλ¬΄ λ§Žμ€ 경우 ν…Œμ΄λΈ”μ„ x λ°©ν–₯으둜 μŠ€ν¬λ‘€ν•˜λŠ” 방법을 μ•„λŠ” μ‚¬λžŒμ΄ μžˆμŠ΅λ‹ˆκΉŒ? minWidth = hardcoded (μ•Œ μˆ˜μ—†λŠ” 수의 μ—΄μ—λŠ” μ ν•©ν•˜μ§€ μ•ŠμŒ)λ₯Ό μ§€μ •ν•˜μ—¬μ΄ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΅œμ‹  λ²„μ „μ—μ„œλŠ” fixedHeader={false} style={{width: "auto", tableLayout: "auto"}} 이 λ¬΄μ‹œ 된 것 κ°™μŠ΅λ‹ˆλ‹€.

μ–΄λ–€ 아이디어?

ν…Œμ΄λΈ” λ‚΄λΆ€μ˜ λͺ©λ‘ μš”μ†Œλ₯Ό μ‚¬μš©ν•˜κ³  λͺ©λ‘ ν•­λͺ©μ˜ λ„ˆλΉ„λ₯Ό μ •μ˜ν•˜λŠ” ν•΄κ²° λ°©λ²•μœΌλ‘œ λλ‚¬μŠ΅λ‹ˆλ‹€.
λ‹€μŒκ³Ό 같은 것 :

<TableCell>
  <ul style={{ width: "150px" }}>
    <li>{row.whatever}</li>
    <li>{row.whatever1}</li>
    <li>{row.whatever2}</li>
  </ul>
</TableCell>

2020 년에도 μ—¬μ „νžˆ λ‹¬μ„±ν•˜κΈ° μ–΄λ ΅μ§€λ§Œ κ°€μž₯ μ΄μƒν•œ 뢀뢄은 μ—΄μ˜ λ„ˆλΉ„λ₯Ό μ„€μ •ν•˜λ €κ³ ν•˜κ³ , λ‹€λ₯Έ 열은 λ„ˆλΉ„λ₯Ό μ •μ˜ν•΄λ„ μžλ™μœΌλ‘œ μ‘°μ •λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€! 무엇을 μ œκ³΅ν•©λ‹ˆκΉŒ? 마치 ν…Œμ΄λΈ”μ΄ 전체 ν…Œμ΄λΈ”μ˜ λ„ˆλΉ„κ°€ 100 %λ₯Ό λ„˜μ§€ μ•Šλ„λ‘ν•˜λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€. 이것은 λ‚˜μ—κ²Œ νž˜λ“  μ‹œκ°„μ„μ€λ‹ˆλ‹€. material-ui의 ν…Œμ΄λΈ”μ„ μ‚¬μš©ν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ 이것은 맀우 μ‰¬μšΈ κ²ƒμž…λ‹ˆλ‹€. material UIκ°€ μ–΄λ ΅κ²Œ λ§Œλ“€μ—ˆ μ„κΉŒμš”?

@aprilmintacpineda λ„€μ΄ν‹°λΈŒ <table> μš”μ†Œλ₯Ό μ‚¬μš©ν•΄ λ³΄μ…¨μŠ΅λ‹ˆκΉŒ?

@oliviertassinari κΈ°μ‘΄ μ½”λ“œλ₯Ό λ„€μ΄ν‹°λΈŒ <table> μš”μ†Œλ‘œ λ³€ν™˜ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

이 μ˜ˆμ œλŠ” λͺ¨λ“  μ—΄μ˜ λ„ˆλΉ„λ₯Ό μ„€μ •ν•˜μ—¬ μž‘λ™ν•©λ‹ˆλ‹€.
https://codesandbox.io/s/fragrant-framework-oy6uz?file=/src/App.js

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰