2017-12-15 41 views

답변

1

여기 SectionList에 대한 numColumns 내 솔루션입니다. 네가 더 잘 알고 있다면 알려줘.

class Example extends Component { 
    static propTypes = { 
    numColumns: PropTypes.number 
    }; 

    static defaultProps = { 
    numColumns: 2 
    }; 

    _renderSection = data => <Section {...data} />; 

    _renderItem = ({ section, index }) => { 
    const { numColumns } = this.props; 

    if (index % numColumns !== 0) return null; 

    const items = []; 

    for (let i = index; i < index + numColumns; i++) { 
     if (i >= section.data.length) { 
     break; 
     } 

     items.push(<Item item={section.data[i]} />); 
    } 

    return (
     <View 
     style={{ 
      flexDirection: "row", 
      justifyContent: "space-between" 
     }} 
     > 
     {items} 
     </View> 
    ); 
    }; 

    render() { 
    return (
     <SectionList 
     sections={dumyData} 
     style={styles.container} 
     renderItem={this._renderItem} 
     renderSectionHeader={this._renderSection} 
     /> 
    ); 
    } 
} 
2

SectionList의 renderItem으로 numColumns prop가있는 FlatList를 사용할 수 있습니다.

const data = [ //Notice [[...]] instead of [...] as in the RN docs 
    {data: [[...]], title: ...}, 
    {data: [[...]], title: ...}, 
    {data: [[...]], title: ...}, 
] 

render() { 
    return (
     <SectionList 
      renderItem={this._renderSectionListItem} 
      renderSectionHeader={this._renderSectionHeader} 
      sections={data} 
     /> 
    ) 
} 

renderSectionListItem = ({item}) => { 
    return (
     <FlatList 
      data={item} 
      numColumns={3} 
      renderItem={this.renderItem} 
     /> 
    ) 
} 
+0

예, 가능하지만 3 항목 만 'FlastList'가 필요한 이유는 무엇입니까? –

+0

@PirShukarullahShah 내가 게시 한 코드는 FlatList를 사용하여 각 목록에있는 항목의 수와 함께 3 열 (3 개 항목이 아님)을 표시하는 예입니다. 자신의 numColum, 자신의 항목 수, 섹션 수를 선택하십시오. 내가 아는 한 제한이 없지만 성능을 향상 시키려면 removeClippedSubviews를 사용하십시오. –

+0

FlatList의 일부 (아마 100 개) 항목에서 성능이 매우 떨어지기 때문에 실제로는 권장하지 않습니다. –