#reactjs #typescript #react-hooks #plaid
Вопрос:
Я ни за что на свете не могу понять, что здесь не так. Я проверил некоторые проблемы, и, похоже, ошибка загрузки plaid null была проблемой в прошлом. Я могу успешно создать маркер ссылки и отобразить его перед переходом в PlaidLink. Кнопка PlaidLink остается отключенной, и в консоли я получаю сообщение об ошибке загрузки plaid null. Чего мне не хватает? Вот ссылка на документы Plaid. https://github.com/plaid/react-plaid-link
Я использую «react-plaid-link»: «^3.2.0»
Вот мой код.
import React, { useCallback, useState, FunctionComponent, useEffect } from "react";
import { usePlaidLink, PlaidLinkOptions, PlaidLinkOnSuccess } from "react-plaid-link";
// @ts-ignore
//import { PlaidLinkOnSuccess } from "react-plaid-link/src/types/index.ts";
interface Props {
token: string;
}
const PlaidLink: FunctionComponent<Props> = ({ token }) => {
const onSuccess = useCallback<PlaidLinkOnSuccess>(
(public_token: any, metadata: any) => {
// send public_token to server
const setToken = async () => {
console.log("token sending to server for exchange")
const response = await fetch("/api/set_access_token", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
},
body: `public_token=${public_token}`,
});
};
},
[]
);
const config: PlaidLinkOptions = {
token,
onSuccess,
// onExit
// onEvent
};
const { open, ready, error } = usePlaidLink(config);
return (
<div>
<p>{token}</p>
<button
onClick={() => open()}
disabled={!ready}
>
Connect a bank account
</button>
</div>
);
};
const PrePlaid: FunctionComponent = () => {
const [token, setToken] = useState<string | null>(null);
// generate a link_token
React.useEffect(() => {
async function createLinkToken() {
let response = await fetch("/api/create_link_token");
const { link_token } = await response.json();
console.log("this is the link token" link_token);
setToken(link_token);
}
console.log("this should happen first")
createLinkToken();
}, []);
// only initialize Link once our token exists
return token === null ? (
// insert your loading animation here
<div className="loader"></div>
) : (
<PlaidLink token={token} />
);
}
export default PrePlaid;
Ответ №1:
отсутствовал тег сценария в index.html
Комментарии:
1. привет @aeipownu, инженер-плед здесь. Какой тег скрипта вы добавили? Насколько я знаю, react-plaid-link должен автоматически вводить тег сценария в тег <head> вашего документа, поэтому я немного озадачен, почему это было исправлено для вас. В любом случае, рад, что ты все понял! Ваш код выше в исходном вопросе выглядит для меня нормально.
2. Это был тот, для документов javascript. <скрипт src=» cdn.plaid.com/link/v2/stable/link-initialize.js»>></… > Это тоже был я. github.com/plaid/react-plaid-link/issues/203 Может дать вам немного больше информации. Но да, странная ошибка, и было довольно больно выяснять. Мне показалось странным, что важность тега сценария была упущена в документах React, но теперь это имеет смысл, поскольку он должен быть добавлен автоматически. У меня также были проблемы со строками импорта, которые должны быть самыми простыми частями! в частности, {plaidlinksuccess}