데이터 테이블로 정렬하기

2019-11-29

react table 사용하기

목적

원하는 list를 게시판 형식으로 가져온 후, 모든 컬럼을 sorting 하기 위함. 찾아보니 react-bootstrap-table-next 라는 걸 찾음.


설치과정

  • react-create-app 사용(git push 후 babel 설정 modify + 그 외 기능들 추가)
  • yarn add react-bootstrap-table-next 명령어로 react-bootstrap-table 설치
  • public/index.html 파일에 bootstrap CSS 추가해야 함!
    이쁘게 보고싶다면 설치!
  • component에서 css 추가
import 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';

결론은 회사에선 쓸 수 없음 ㅠ_ㅠ 기존 css 랑 충돌될 것 같음 ,,
해결 ! index.html에 부트스트랩css 추가 안해도 됨. 테이블 형식으로 나오긴 하는데, 관련 css는 따로 작성해서 import 처리하면 된다 ㅎ




출처

react-bootstrap-table2 doc LIVE DEMO 사이트



App.js

import React, {Component} from 'react';
import Table from './components/table1';

class App extends Component {
  render() {
    return (
      <div>
        <Table />
      </div>
    );
  }
}

export default App;




table1.js

import React, { Component } from 'react';
import Table2 from "./table2";

class Table extends Component{
    render(){
        
        return(
            <div>
                <Table2 />
            </div>
        );
    }
}

export default Table;




table2.js

import React, { Component } from 'react';
import 'react-bootstrap-table-next/dist/react-bootstrap-table2.min.css';
import BootstrapTable from 'react-bootstrap-table-next';
import {inject, observer} from "mobx-react";

class Table2 extends Component{
    render(){
        const products = [

            { id: 0, name: 'good', price: 1000 },
            { id: 1, name: 'soso', price: 1500 },
            { id: 2, name: 'bad', price: 500 },
            { id: 3, name: 'good3', price: 41000 },
            { id: 4, name: 'soso4', price: 800 }

        ];
        const columns = [
            {
                dataField: 'id',
                text: 'Product ID',
                sort: true
            },{
                dataField: 'name',
                text: 'Product Name',
                sort: true  
            },{
                dataField: 'price',
                text: 'Product Price',
                sort: true  
            }
        ]; 

        const defaultSorted = [{
            dataField: 'name',
            order: 'desc'
          }];
          
        return(
            <div>
                <BootstrapTable keyField='id' data={ products } columns={ columns } 
                defaultSorted={ defaultSorted }
                striped
                hover
                />
            </div>
        );
    }
}

export default Table2;

기본적으로 가져올 때, name을 기준으로 desc형태로 가져옴. 각 컬럼을 누를 떄마다 desc/asc 형태로 된다.

<BootstrapTable /> 의 필수 요소

  • keyField
  • data
  • columns




손쉽게 정렬을 완성할 수 있다!