Get Free Trial
  1. API reference
Connecting to Data Source
Configuring the component
  • Documentation for older versions
  • Table of contents

    Integration with React

    This tutorial will help you integrate Flexmonster with React.

    Prerequisites


    This guide contains the following sections:

    1. Run a sample project from GitHub
    2. Integrate with React ES6 or TypeScript
    3. Integrate with React ES5
    4. Examples of Flexmonster usage in React
    5. Use Flexmonster with React Hooks
    6. Improve Flexmonster performance in React

    Run a sample project from GitHub

    Download the sample project with the flexmonster create command. You can choose either the ES6 or TypeScript project:

    React + ES6

    flexmonster create react es6 -r

    The flexmonster create react es6 command does the following:

    • Downloads the .zip archive with the sample React + ES6 project from GitHub.
    • Automatically unpacks the files in the current folder — as a result, the flexmonster-react-es6-project/ folder will appear in your working directory.

    The -r option, which is short for --run, completes the following tasks:

    • Installs all the npm dependencies described in package.json.
    • Compiles the application and runs it in the browser.

    React + TypeScript

    flexmonster create react typescript -r

    The flexmonster create react typescript command does the following:

    • Downloads the .zip archive with the sample React + TypeScript project from GitHub.
    • Automatically unpacks the files in the current folder — as a result, the flexmonster-react-typescript-project/ folder will appear in your working directory.

    The -r option, which is short for --run, completes the following tasks:

    • Installs all the npm dependencies described in package.json.
    • Compiles the application and runs it in the browser.

    The application can be shut down manually with Ctrl + C.

    Integrate with React ES6 or TypeScript

    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.

    Step 1. Create a new React project

    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:

    React + ES6

    npx create-react-app my-app
    cd my-app

    React + TypeScript

    npx create-react-app my-app --template typescript
    cd my-app

    Step 2. Install Flexmonster

    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.

    Step 3. Add Flexmonster styles

    Import the Flexmonster styles.

    React + ES6

    Add the following import statement to index.js:

    import 'flexmonster/flexmonster.css';

    React + TypeScript

    Add the following import statement to index.tsx:

    import 'flexmonster/flexmonster.css';

    Step 4. Import Flexmonster

    Include the FlexmonsterReact component into your React project.

    React + ES6

    Add the following import statement to App.js:

    import * as FlexmonsterReact from 'react-flexmonster';

    React + TypeScript

    Add the following import statement to App.tsx:

    import * as FlexmonsterReact from 'react-flexmonster';

    Step 5. Create the pivot table

    You can now use Flexmonster in your React project.

    React + ES6

    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>
      );
    }

    React + TypeScript

    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.

    Step 6. Run the project

    Run your application from the console:

    npm start

    Integrate with React ES5

    If needed, you can use the ES5 version of Flexmonster in your React project. Import FlexmonsterReact ES5 in App.js as follows:

    import * as FlexmonsterReact from 'react-flexmonster/es5';

    The ES5 version of Flexmonster will now be used instead of the ES6 one.

    Examples of Flexmonster usage in React

    Our sample React projects contain the following usage examples:

    • Creating the pivot table
    • Handling events
    • Using API calls
    • Updating data
    • Customizing the Toolbar
    • Customizing the grid
    • Integrating with Highcharts
    • Integrating with amCharts

    Learn more about each of these examples in our guide: Flexmonster usage in React.

    Use Flexmonster with React Hooks

    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.

    Improve Flexmonster performance in React

    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.

    What’s next?

    You may be interested in the following articles: