#reactjs #transactions #react-hooks #ethereum
#reactjs #транзакции #реагирующие крючки #ethereum
Вопрос:
Я хотел бы установить переменную с помощью реактивных перехватов. Всякий раз, когда я отправляю транзакцию Ethereum, ее хэш можно получить с помощью метода on(‘transactionHash’, {…}), но если я попытаюсь вызвать setTransactionHash, ничего не произойдет. Вот код:
import React, {useState, useEffect, useCallback} from 'react';
import collegamentoConDb from '../api/collegamentocondb';
const Admin = ()=>{
const [transactionHash, setTransactionHash] = useState("");
...
try{
window.ethereum.enable();
const accounts = await web3.eth.getAccounts();
await contract.methods.notarizzazione(hashCampi).send({
from:accounts[0]
}).on('transactionHash', (hash)=>{
setTransactionHash(hash)
});
} catch(err){
console.log(err);
}
//db call
const fileTestoPdf = await collegamentoConDb.post('/creapdf', {id, transactionHash});
...
Когда я читаю файл журнала, transactionHash не обновляется, и я не понимаю, почему. Кто-нибудь может мне помочь?
Спасибо.
Ответ №1:
Не могли бы вы получить хэш в консоли? если да, то попробуйте const [transactionHash, setTransactionHash] = useState();
Комментарии:
1. Нет, я не могу. Консоль пуста. Я почти уверен, что метод, который я использую, правильный, потому что все работает без перехватов.
2. Хорошо, понял, вы можете попробовать
on('transactionHash', ((hash)=>{ setTransactionHash(hash) });
3. Это не работает. Если я console.log(transactionHash) после транзакции, он печатает undefined.
4. не могли бы вы добавить код в codesandbox или StackBlitz, чтобы я мог больше помочь?
5. Вы можете найти часть моего кода здесь. stackblitz.com/edit/react-9khr3p