import React, { useCallback, useState } from 'react'; import { usePlaidLink, PlaidLinkOnSuccess, PlaidLinkOnEvent, PlaidLinkOnExit, PlaidLinkOptions, } from 'react-plaid-link'; const PlaidLink = () => { const [token, setToken] = useState(null); // get a link_token from your API when component mounts React.useEffect(() => { const createLinkToken = async () => { const response = await fetch('/api/create_link_token', { method: 'POST', }); const { link_token } = await response.json(); setToken(link_token); }; createLinkToken(); }, []); const onSuccess = useCallback((publicToken, metadata) => { // send public_token to your server // https://plaid.com/docs/api/tokens/#token-exchange-flow console.log(publicToken, metadata); }, []); const onEvent = useCallback((eventName, metadata) => { // log onEvent callbacks from Link // https://plaid.com/docs/link/web/#onevent console.log(eventName, metadata); }, []); const onExit = useCallback((error, metadata) => { // log onExit callbacks from Link, handle errors // https://plaid.com/docs/link/web/#onexit console.log(error, metadata); }, []); const config: PlaidLinkOptions = { token, onSuccess, onEvent, onExit, }; const { open, ready, // error, // exit } = usePlaidLink(config); return ( ); }; export default PlaidLink;