Custom Component
Custom Component can be used to create your own React component when the needed functionality isn't available in other components.

Properties​
Data​
The data needs to be an object that needs to be passed as data props to the Custom Component.
Example:
{{{
title: "Hi! There",
buttonText: "Updated Text",
queryName: "runjs1"
}}}
Code​
This field is used to add a React code for your custom component. The packages for the custom component can be imported from Skypack or esm. For example, to import React package into the custom component it can be imported as import React from 'https://cdn.skypack.dev/react'
.
ToolJet provides 3 props to interact with the app:
- data is a shared object between a custom component and the ToolJet app.
- updateData is a function that accepts a single object used to update the data passed to the custom component.
- runQuery is a function that accepts a query name as a string used to run the query from the custom component.
Example:
import React from "https://cdn.skypack.dev/react";
import ReactDOM from "https://cdn.skypack.dev/react-dom";
import { Button, Container, Link } from "https://cdn.skypack.dev/@material-ui/core";
const MyCustomComponent = ({data, updateData, runQuery}) => (
<Container>
<h1>{data.title}</h1>
<Button
color="primary"
variant="outlined"
onClick={() => {updateData({...data, title: 'Hello World!!'})}}>
{data.buttonText}
</Button>
<Button
color="primary"
variant="outlined"
onClick={() => {runQuery(data.queryName)}}
>
Run Query
</Button>
</Container>
);
const ConnectedComponent = Tooljet.connectComponent(MyCustomComponent);
ReactDOM.render(<ConnectedComponent />, document.body);
info
Tooljet.connectComponent
acts as a HOC and it is required to get access to the data passed into the custom component and run the query.