Codage des fonctions React pour obtenir et afficher des données provenant de sites Web tiers
P粉823268006
P粉823268006 2023-08-29 21:41:15
0
1
530

Aidez-moi à obtenir des informations de la blockchain et à les afficher dans le navigateur. Je veux savoir comment appeler cette fonction ThirdWeb dans React. Le code ci-dessous est le code Solidity utilisé pour créer des utilisateurs dans notre système.

fonction createUser (mémoire de chaîne _userId, mémoire de chaîne _fName, mémoire de chaîne _lName, mémoire de chaîne _mobile, mémoire de chaîne _dob, uint256 _age, mémoire de chaîne _nationalité, mémoire de chaîne _gender ) publique { if(!chkexisitinguserId(_userId)){ users[_userId] = User(_fName, _lName, _mobile, _dob, _age,_nationality,_gender); noofUser++; allUserId[k] = _userId; k++; } } la fonction getUser (mémoire de chaîne _userId) renvoie la vue publique (mémoire de chaîne, mémoire de chaîne, mémoire de chaîne, mémoire de chaîne, uint256, mémoire de chaîne, mémoire de chaîne) { Mémoire utilisateur user = users[_userId]; return (user.fName, user.lName, user.mobile, user.dob, user.age, user.nationality, user.gender); } 

Le code suivant est le code de la troisième bibliothèque Web qui interagit avec les contrats intelligents. Le code ci-dessous est stocké dans le fichier refer.js.

import { useContract, useContractWrite } depuis "@thirdweb-dev/react"; exporter la fonction par défaut Component() { const { contrat } = useContract("0xBB417720eBc8b76AdeAe2FF4670bbc650C3E791f"); const { mutateAsync : createUser, isLoading } = useContractWrite (contrat, "createUser") const appel = async () => essayer { const data = wait createUser([ "John0312", "John", "s", "8090890367", "03-11-2000", 20, "Inde", "M" ]); console.info("succès des appels de contrat", données); } attraper (erreur) { console.error("échec de l'appel du contrat", err); } } } exporter la fonction par défaut Component() { const { contrat } = useContract("0xBB417720eBc8b76AdeAe2FF4670bbc650C3E791f"); const { data, isLoading } = useContractRead (contrat, "getUser", _userId) } 

Le contrat intelligent a été déployé sur ThirdWeb et tente d'y accéder. Je ne sais pas comment appeler cette fonction asynchrone "appeler" depuis app.js.

importer React, { useEffect } depuis 'react' fonction App(){ const handleclick = async (e) => attendre l'appel(); } retour (  ) } exporter l'application par défaut

Il génère une erreur comme un appel de fonction non défini ().

P粉823268006
P粉823268006

répondre à tous (1)
P粉106715703

Je vais créer un nouveau crochet (méthodeuseCall.js),它的作用仅仅是实例化useContractuseContractWrite钩子,然后为您在任何组件中使用定义call().

Dans cet exemple,call()是从钩子中返回的唯一内容。它被包裹在useCallback中,以确保它只在createUserest défini lorsqu'il est défini.

export default function useCall() { const { contract } = useContract("0xBB417720eBc8b76AdeAe2FF4670bbc650C3E791f"); const { mutateAsync: createUser, isLoading } = useContractWrite(contract, "createUser") const call = React.useCallback(async () => { try { const data = await createUser([ "John0312", "John", "s", "8090890367", "03-11-2000", 20, "India", "M" ]); console.info("contract call successs", data); } catch (err) { console.error("contract call failure", err); } }, [createUser]); return call; }

Maintenant, dans n'importe quel composant, vous pouvez utiliser ce hook et obtenir la fonctioncall():

import useCall from './useCall'; export default function Component() { const call = useCall(); useEffect(() => { (async () => { await call(); })(); }, []); }
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!