! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

웹 응용 프로그램에서 React 데이터 그리드를 빠르게 만드는 방법 > 온라인 스터디

본문 바로가기

기초튜토리얼 웹 응용 프로그램에서 React 데이터 그리드를 빠르게 만드는 방법

페이지 정보

작성자 GrapeCity 작성일 2023-06-26 16:46 조회 744회 댓글 0건

본문

데이터 그리드는 UI의 출현 이래 소프트웨어의 가장 흔한 시각적 소프트웨어로 자리 잡았습니다. 최대한 많은 데이터를 최대한 빨리 받아들이고 이해하려는 우리 모두의 본능에 들어맞기 때문입니다. 오늘날의 데이터 그리드는 데이터의 표시뿐 아니라 편집에도 매우 유용합니다.


대다수의 사용자는 정렬, 자동 완성과 같은 자동 편의 기능과 사용자 정의 수식과 같은 고급 기능을 갖춘 Microsoft Excel을 자연스럽게 선택합니다. 사용자들이 Excel을 선택하는 이유는 Excel이 익숙하기 때문입니다.


Excel이 데이터 그리드를 사용하는 소프트웨어의 가장 일반적인 예시가 되었지만, 소프트웨어 분야 전반에 걸쳐 패러다임이 확장되어 왔습니다. 웹 앱이 우리에게 익숙한 기존의 네이티브 응용 프로그램을 계속해서 대체함에 따라, 데이터 그리드 또한 웹 앱 UI로의 이동을 모색하는 것은 당연한 일입니다.


시장에는 오픈 소스이거나, 타사에서 제작되거나, 자체 개발된 수많은 JavaScript 데이터 그리드가 있습니다. 이 중에 어떤 것을 선택해야 할까요?


다른 게시물에서는 데이터 그리드가 그토록 유용한 UI 요소인 이유와 FlexGrid가 최상의 React 데이터 그리드인 이유를 알아보았습니다.


 React 데이터 그리드 개요통해 React 데이터 그리드를 확인하고 FlexGrid의 실제 작동을 확인할 수 있습니다. 샘플 사본은 NPM, CDN, 또는 GrapeCity 사이트에서 다운로드할 수 있습니다. 이 모든 게 정말 훌륭하지 않나요?


FlexGrid를 작동시켜 봅시다. 이 React 데이터 그리드 예제에서는 사용자 정의 가능한 React 데이터 그리드를 몇 분 안에 빌드합니다.  


Facebook의 JavaScript 프레임워크인 React에서

FlexGrid를 사용하는 방법을 보여드리기 위해 React 샘플 앱을 사용하겠습니다.


샘플은 stackblitz를 사용해 만들었으므로 유지 관리하고 공유하기 쉽습니다.


이번 스터디에서는 다음과 같은 내용을 다룹니다.




   

React 앱을 만드는 방법


React 데이터 그리드 예시 앱의 사본을 만들려면 다음 단계를 따릅니다.


  1. stackblitz를 엽니다.

  2. 화면 상단의 'React/JavaScript' 버튼을 클릭합니다.

  3. '@grapecity/wijmo'를 종속성 목록에 입력하여 프로젝트에 Wijmo를 추가합니다.

사용자 정의 가능한 React 데이터 그리드 예제를 몇 분 안에 빌드하는 방법


 

필수 모듈을 가져오는 방법


이 앱의 React 버전에서 모든 코드 및 로직은 index.js 파일에 포함되어 있습니다.

코드는 React 및 Wijmo에서 필요한 클래스 및 스타일을 가져오는 작업부터 시작합니다.

import React from "react";  
import ReactDOM from "react-dom";  
import "./style.css";  
​
import { CollectionView } from "@grapecity/wijmo";  
import { FlexGrid } from "@grapecity/wijmo.react.grid";  
import { FlexGridFilter } from "@grapecity/wijmo.react.grid.filter";  
import "@grapecity/wijmo.styles/wijmo.css";

클래스뿐만 아니라 코드에서 일부 CSS를 가져오는 방법에도 주목해 보세요!

이 React 데이터 그리드 자습서에서는 Wijmo에 포함된 여러 테마 중 하나인 Material 테마를 선택했습니다.

 


앱 스타일 지정하기


앱의 스타일을 지정하려면 styles.css 파일을 다음과 같이 편집하세요.

body {  
 font-family: Lato, Arial, Helvetica;  
}  
.wj-flexgrid {  
 /* limit the grid's width and height */  
 max-height: 300px;  
 max-width: 32em;  
}

 


그리드에 데이터 소스 추가하기


데이터 소스는 평소와 같이 React 앱에 대한 앱 컴포넌트의 상태 중 일부가 됩니다.

앱 컴포넌트는 다음과 같이 정의됩니다.

class App extends React.Component {  
 constructor() {  
   super();  
   this.state = {  
     data: new CollectionView([], {  
       groupDescriptions: ["make"]  
    })  
  };  
   this.filterApplied = () => {  
     let view = this.state.data;  
     this.setState({  
       data: view  
    });  
  };  
}  
​
 componentDidMount() {  
   fetch("https://api.jsonbin.io/b/5f0765bc5d4af74b01295f26").then(result => result.json()).then(data => {  
     let view = this.state.data;  
     view.sourceCollection = data;  
     this.setState({  
       data: view  
    });  
  });  
}  
​
 render() { ... }  
}


React 데이터 그리드 예시 앱 상태는 제조사(Make)로 그룹화되는 '데이터' 속성인 CollectionView를 통해 데이터를 노출합니다. 데이터는 컴포넌트가 마운트된 후 비동기로 로드됩니다. 데이터는 수신된 후 CollectionView의 sourceCollection 속성에 할당되어 응용 프로그램에서 사용할 수 있게 됩니다.


이 컴포넌트는 데이터가 필터링될 때 상태를 업데이트하는 데 사용되는 filterApplied 메서드도 정의합니다. 이 컴포넌트는 앱 헤더에 표시되는 총 개수를 업데이트하는 데 필수적입니다.

 

React에서 데이터를 시각화하는 방법


마지막 단계는 앱 컴포넌트의 render 메서드를 구현하는 것입니다. 이 메서드는 그리드를 비롯한 전체 UI를 렌더링합니다.

class App extends React.Component {  
 constructor() { ... }  
​
 componentDidMount() { ... }  
​
   render() {  
   return (  
     <div>  
       <h1>2019 Sedans (React)</h1>  
       <p>  
         Sort by model and price by clicking the column headers. Filter by  
         value or condition by clicking the filter icons in the column headers.  
         Collapse and expand makes to see all the models. Select one or more  
         models with the mouse or keyboard and copy your selection to the  
         clipboard.  
       </p>  
       <p>  
         Showing <b>{this.state.data.items.length}</b> models from{" "}  
         <b>{this.state.data.groups.length}</b> makes.  
       </p>  
       <FlexGrid  
         allowResizing={"None"}  
         showAlternatingRows={false}  
         isReadOnly={true}  
         selectionMode={"ListBox"}  
         headersVisibility={"Column"}  
         autoGenerateColumns={false}  
         columns={[  
          { binding: "make", header: "Make", width: "*", visible: false },  
          { binding: "model", header: "Model", width: "*" },  
          {  
             binding: "price",  
             header: "Price",  
             width: ".5*",  
             format: "c0",  
             aggregate: "Avg"  
          }  
        ]}  
         itemsSource={this.state.data}  
       >  
         <FlexGridFilter filterApplied={this.filterApplied} />  
       </FlexGrid>  
     </div>  
  );  
}  
}


앱 헤더에는 짧은 앱 설명과 표시되는 모델 및 제조사의 수에 대한 요약이 포함되어 있습니다.


요약에 있는 수는 사용자가 데이터를 필터링할 때 자동으로 업데이트됩니다. 헤더 다음에는 itemsSource, 표시할 열, 속성 등 그리드의 속성을 초기화하는 'FlexGrid' 요소가 나옵니다.


열 속성에는 각 열의 바인딩, 헤더, 서식, 너비가 있습니다. 가격 열의 aggregate 속성으로 인해 React 데이터 그리드 예제의 그룹 헤더에는 제조사별 평균 가격을 표시합니다.


'FlexGrid' 요소에는 사용자가 모델과 가격을 기준으로 그리드 데이터를 필터링할 수 있는 열 필터를 추가하는 'FlexGridFilter' 요소가 포함되어 있습니다. filterApplied 이벤트는 필터 변경 시 상태를 업데이트하여 페이지의 상단 요약이 업데이트되도록 합니다.


 

응용 프로그램을 실행하는 방법


다 되었습니다!

'2019 Sedans' 앱의 React 버전이 준비되었습니다. (링크를 누르면 데모 앱으로 이동합니다.)

사용자 정의 가능한 React 데이터 그리드를 몇 분 안에 빌드하는 방법


이번 스터디가 여러분의 마음에 드셨길 바랍니다.

즐겁게 코딩하세요!



지금 바로 Wijmo를 다운로드하여 직접 테스트해 보세요!



  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.