Skip to main content
Version: Portal 2

Getting started with Portal in React

We've made it simple to get started with Portal with our Portal React Component. Here's what you'll need to know to begin.

note

You'll need a license key to continue. Log in to your account to access the Flatfile dashboard. Head to the Flows section in the left-hand navigation pane and find your license key under the Portal tab.

Install and import

note

This import has recently changed.

npm install --save @flatfile/react@^0

This gives you access to the FlatfileButton component, which has the same basic functionality as our Adapter.

import { FlatfileButton } from "@flatfile/react";

This brings the FlatfileButton component into your project.

Configure your settings and usage

To launch, the FlatfileButton component must have settings , customer and licenseKey as properties.

Basic Usage

<FlatfileButton
licenseKey="Your License Key"
customer={{
companyId: "ABC-123",
companyName: "ABC Corp.",
email: "john@abc123.com",
name: "John Smith",
userId: "12345",
}}
settings={{
type: "Contact",
fields: [
{ label: "Full Name", key: "name" },
{ label: "Email", key: "email" },
],
managed: true,
}}
onData={async (results) => {
// Do something with the data here
return "Done!";
}}>
Import Contacts
</FlatfileButton>

Here is a list of all the properties that are configurable with the <FlatfileButton> component. Visit out settings guide to learn about each in greater depth.

  • settings - Required - Pass in an object containing the import type and your fields . For a list of the other optional settings, check out our options documentation here.
  • customer - Required - Pass in an object that identifies the customer uploading the file. This refers the the setCustomer() function on our SDK, and the same object should be passed in here.
  • licenseKey - Required - In order to access our product, a license key is required. The license key can be found in your dashboard by logging in here.
  • onCancel - This allows you to pass in a callback function that will run if the user cancels out of the import.
  • onData - This allows you to return a new Promise to handle the Flatfile results when returned.
  • onRecordChange - This provides access to Flatfile's record hooks when a record changes.
  • onRecordInit - This provides access to Flatfile's record hooks when a record initializes.
  • fieldHooks - This allows you to pass in one or more field hooks as separate callback functions.
  • source - This allows you to start the importer with source data instead of with a file. It can accept the data as a CSV string or an InputObject.
  • render - The render property allows for you to pass in your own components or buttons to use in place of the standard Flatfile UI element.

Full Usage

import React from "react";
import { FlatfileButton } from "@flatfile/react";

export const MyFakeUI = () => {
return (
<div>
<h1>Import using Flatfile</h1>
<FlatfileButton
settings={{
type: "test import",
fields: [
{ label: "name", key: "name" },
{ label: "Email", key: "email" }
]
}}
licenseKey={"Your license key here"}
customer={{
companyId: "ABC-123",
companyName: "ABC Corp.",
email: "john@abc123.com",
name: "John Smith",
userId: "12345"
}}
onData={async (results) => {
// do something with the results
console.log(results);
}}
onRecordChange={(record) =>
return { name: { value: record.name + " from change" };
}}
onRecordInit={(record) =>
return { name: { value: record.name + " from init" };
}}
fieldHooks={{
email: (values) =>
return values.map(([item, index]) => [
{ value: item + ".au" },
index
]);
}
}
onCancel={() => {
console.log("cancel");
}}
render={(importer, launch) => {
return <button onClick={launch}>Upload file</button>;
}}
/>
</div>
);
};
tip

Try our example in CodeSandbox.