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.
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
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 importtype
and yourfields
. 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 thesetCustomer()
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>
);
};
Try our example in CodeSandbox.