React 개발환경을 준비하기 위해서는 NodeJS 설치가 필요합니다. 아래의 영상의 초반부를 참고하시기 바랍니다.
C:..> npx create-react-app example
아래 링크를 클릭하고 기본 코드를 다운받고 압축을 해제합니다.
- 다운받은 기본코드 폴더에서 index.html을 제외한 나머지 파일을 Vue의 public 폴더로 복사합니다.
<!DOCTYPE html>
<html lang="en">
<head>
...
<script type="text/javascript" src="/js/pdfkit.js"></script>
<link href="/highcharts/highcharts.css" rel="stylesheet" />
<script src="/highcharts/highcharts.js"></script>
<script src="/highcharts/highcharts-more.js"></script>
<link href="/realreport/realreport.css" rel="stylesheet" />
<script src="/realreport/realreport-lic.js"></script>
<script type="text/javascript" src="/realreport/realreport.js?v=4"></script>
<script src="/fonts/malgun.js"></script>
<script src="/fonts/malgun-bold.js"></script>
<title>React App</title>
</head>
<body>
...
</body>
</html>
- src 밑에 data 폴더를 생성하고 아래 두 파일을 복사합니다.
import React from "react";
/* eslint-disable */
import reportForm from "../data/reportForm";
import reportData from "../data/reportData";
class Preview extends React.Component {
componentDidMount() {
this.viewer = new RealReport.ReportViewer("realreport", reportForm);
this.viewer.dataSet = reportData;
this.viewer.preview();
}
render() {
return (
<div id="realreport"></div>
);
}
}
export default Preview;
import Preview from './components/preview';
import './App.css';
function App() {
return (
<Preview />
);
}
export default App;
import React from "react";
/* eslint-disable */
import reportForm from "../data/reportForm";
import reportData from "../data/reportData";
class Preview extends React.Component {
componentDidMount() {
this.viewer = new RealReport.ReportViewer("realreport", reportForm);
this.viewer.dataSet = reportData;
this.viewer.preview();
}
// 이벤트 콜백함수에서 this를 쓰려면 고려사항이 있습니다
// 아래 링크를 참고하세요.
// https://ko.reactjs.org/docs/handling-events.html
print = () => {
const container = printPreview.contentWindow.document.getElementById("realreport");
container.innerHTML = this.viewer.getHtml();
printPreview.contentWindow.print();
}
render() {
return (
<div>
<div style={{ height: '32px', position: 'fixed' }}>
<button onClick={ this.print }>print</button>
</div>
<div style={{ height: '32px '}}></div>
<div id="realreport" className="scroller"></div>
<iframe id="printPreview"src="/print.html" style={{ display: 'none' }}></iframe>
</div>
);
}
}
export default Preview;