首页 > 解决方案 > React Plaid Link:成功切换事件后错误触发 onExit 回调

问题描述

我目前从 onExit 回调中收到一个错误,说在触发 onSucess 回调后需要凭据才能将项目链接到 Plaid。onSuccess 函数在提交时成功命中我的端点并在触发时连接帐户,但 onExit 函数总是在之后执行。当一切似乎都按预期工作时,我需要弄清楚为什么会出现错误。我猜我错过了一些东西,所以任何帮助将不胜感激!

  const connectAccount = (account: any) => {
    return useApi('/v1/expense/payments/accounts/connect', 'POST', account).then((response) => {
      if(response) {
        getAccounts(0, 2).then(() => {
          if(account.length !== 0) {
            getActiveView('LIST');
          } else {
            getActiveView('LOADER');
          }
          return response;
        });
      };
      return response;
    });
  };

  const onSuccess = useCallback(
    (public_token, metadata) => {
      connectAccount({
        accounts: [
          {
            id: metadata.account.id,
            mask: metadata.account.mask,
            name: metadata.account.name,
          },
        ],
        institutionId: metadata.institution.institution_id,
        institutionName: metadata.institution.name,
        publicToken: metadata.public_token,
      });
    },
    [],
  );

  const onExit = useCallback(
    (error, metadata) => {
      console.log(error, metadata);
    },
    [],
  );

  const config: PlaidLinkOptions = {
    token,
    onSuccess,
    onExit,
  };

  const { open, ready } = usePlaidLink(config);

  return (
    <>
      {ready ? open() : null}
    </>
  );
};

export const Link = (props: Props) => {
  const [token, setToken] = useState<string | null>(null);

  const getAccountLink = () => {
    return useApi('/v1/expense/payments/accounts/link').then((response) => {
      if (response && response.linkToken) {
        setToken(response.linkToken);
      } else {
        return;
      };
    });
  };

  // generate a link_token
  useEffect(() => {
    getAccountLink();
  }, []);

  // initialize Link modal
  return token === null ? (
    <Loader />
  ) : (
    <PlaidLink
      token={token}
      getActiveView={props.getActiveView}
      getAccounts={props.getAccounts}
    />
  );
};

标签: javascriptreactjsplaid

解决方案


推荐阅读