This tutorial will help you integrate Flexmonster with React.
npm install -g flexmonster-cli
This guide contains the following sections:
Download the sample project with the flexmonster create
command. You can choose either the ES6 or TypeScript project:
flexmonster create react es6 -r
The flexmonster create react es6
command does the following:
.zip
archive with the sample React + ES6 project from GitHub.flexmonster-react-es6-project/
folder will appear in your working directory.The -r
option, which is short for --run
, completes the following tasks:
package.json
.flexmonster create react typescript -r
The flexmonster create react typescript
command does the following:
.zip
archive with the sample React + TypeScript project from GitHub.flexmonster-react-typescript-project/
folder will appear in your working directory.The -r
option, which is short for --run
, completes the following tasks:
package.json
.The application can be shut down manually with Ctrl + C
.
Follow the steps below to integrate Flexmonster Pivot into a new React application. If you already have a React project, jump to Step 2. Install Flexmonster.
If you don’t have a React app yet, create one by running the following commands in the console. You can choose between ES6 and TypeScript projects:
npx create-react-app my-app
cd my-app
npx create-react-app my-app --template typescript cd my-app
Install the Flexmonster React module by running this CLI command from the folder containing package.json
:
flexmonster add react-flexmonster
The add
command installs the react-flexmonster
package to the node_modules/
folder and adds it as an npm dependency to package.json
.
Import the Flexmonster styles.
Add the following import statement to index.js
:
import 'flexmonster/flexmonster.css';
Add the following import statement to index.tsx
:
import 'flexmonster/flexmonster.css';
Include the FlexmonsterReact
component into your React project.
Add the following import statement to App.js
:
import * as FlexmonsterReact from 'react-flexmonster';
Add the following import statement to App.tsx
:
import * as FlexmonsterReact from 'react-flexmonster';
You can now use Flexmonster in your React project.
Insert a pivot table into App.js
:
function App() { return ( <div className="App"> <FlexmonsterReact.Pivot toolbar={true} componentFolder="https://cdn.flexmonster.com/" width="100%" report="https://cdn.flexmonster.com/reports/report.json" /> </div> ); }
Insert a pivot table into App.tsx
:
function App() { return ( <div className="App"> <FlexmonsterReact.Pivot toolbar={true} componentFolder="https://cdn.flexmonster.com/" width="100%" report="https://cdn.flexmonster.com/reports/report.json" /> </div> ); }
This step mentions only some of the FlexmonsterReact.Pivot
props. These props are equivalent to Flexmonster’s initialization parameters. See the full list of available parameters.
Run your application from the console:
npm start
Our sample React projects contain the following usage examples:
Learn more about each of these examples in our guide: Flexmonster usage in React.
Step 1. To use Flexmonster Pivot with React Hooks, import FlexmonsterReact
as a class component:
import * as FlexmonsterReact from 'react-flexmonster';
Step 2. Embed Flexmonster into your React Hooks component:
import React from 'react';
import * as FlexmonsterReact from 'react-flexmonster';
function PivotTableHooks (props) {
const ref = React.useRef();
const onReportComplete = () => {
console.log(">>>>", ref.current.flexmonster.getReport());
}
return <>
<div className="App">
<FlexmonsterReact.Pivot
ref={ref}
toolbar={true}
width="100%"
report="https://cdn.flexmonster.com/reports/report.json"
reportcomplete={onReportComplete}
/>
</div>
</>;
}
export default PivotTableHooks;
In the example above, notice this line:
console.log(">>>>", ref.current.flexmonster.getReport());
It demonstrates how to call Flexmonster methods when using React Hooks. Here is the full list of Flexmonster API calls.
One of the causes of slow Flexmonster performance in React is the babel-loader package, which is preinstalled in React applications. By default, babel-loader
transpiles all files located in the node_modules/
folder, including Flexmonster files.
This issue can be fixed by manually configuring babel-loader
, which requires running the npm run eject
command. Note that this command’s effect is irreversible, so we recommend learning more about npm run eject before running it.
To improve Flexmonster performance, follow the steps below:
Step 1. Run the npm run eject
command in the console.
Step 2. Open the webpack.config.js
file and exclude Flexmonster from babel-loader
:
// Process any JS outside of the app with Babel
// Unlike the application JS, we only compile the standard ES features
{
test: /\.(js|mjs)$/,
exclude: [
/node_modules[\\/]flexmonster/,
/@babel(?:\/|\\{1,2})runtime/
],
loader: require.resolve('babel-loader'),
…
}
If you completed the instructions above, but the performance is still slow, you can try passing data to the component in a different way.
For example, data can be aggregated on a server and passed to Flexmonster in a ready-to-show format. This will reduce the load on the browser and improve performance. This approach is implemented in Flexmonster Data Server - our tool for server-side data processing, so you are welcome to use it.
You may be interested in the following articles: