Есть ли лучший способ обновить хэш tx?

Ниже приведен фрагмент моего кода (который работает).

....

let txhash = '';

class App extends Component {
  ....

  async componentDidMount() {
    .....
  }

  onSubmit = async(event) => {
    event.preventDefault();
    const accounts = await web3.eth.getAccounts();

    this.setState({
      message: "Waiting for the transaction to be mined..."
    });

    await lottery.methods.enterLotteryContract().send({
      from: accounts[0],
      value: web3.utils.toWei(this.state.value, 'ether')
    }).on('transactionHash', function(hash) {
      txhash = hash
    });

    this.setState({
      message: "Congrats, the tx has been mined; your txhash  is " + txhash
    })
    console.info(txhash);
  });
}

Подробнее здесь: https://github.com/DKSukhani/lottery-react/blob/master/src/App.js

Было интересно, есть ли для меня лучший способ получить txhash и затем отобразить его. Я надеялся, что смогу сделать txhash одним из компонентов состояния, а не объявлять его как пустую переменную. Также я использую функцию обратного вызова только для переназначения ее на txhash.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
79
1

Ответы 1

Можете ли вы задать свой вопрос более четко? Ваш код имеет смысл и отлично выглядит для какой-то неизвестной цели. Однако это именно то, что мне нужно знать.

  • Когда вам нужен txHash, после каждого вызова этой функции или вы пытаетесь отслеживать что-то еще.
  • Почему это не может быть переменная состояния, вы не включили состояние в свой фрагмент, поэтому мне пришлось взглянуть на остальную часть вашего кода и не найти причины, почему нет. Вы используете его во фрагменте, поэтому ясно, что вы жестяная банка используете его в какой-то степени. Я не использую React, поэтому, возможно, есть какой-то цикл рендеринга, проблема со слушателем или другая причина, по которой вы не можете использовать setState.

С учетом сказанного, проверьте эта ссылка на различных событиях, которые вы можете прослушивать с помощью on, поскольку я думаю, что вы слушаете неправильное событие или выводите неправильный текст. Когда вы устанавливаете сообщение состояния, чтобы сказать, что tx был добыт, я не верю, что это было на самом деле.

Я бы использовал confirmation и отображал сообщение только при первом срабатывании события, а затем игнорировал оставшиеся 23. Объект, возвращаемый вместе с номером подтверждения, описан здесь и имеет переменную transactionHash, которую вы можете использовать как для проверки того, что транзакция была подтверждена, так и для получить хеш одновременно. Теперь ваш вызов события больше не такой расточительный, и вы можете использовать тот же вызов setState для сообщения, что и для txHash, или даже вообще пропустить сохранение txHash (при условии, что вы все еще можете использовать setState асинхронно).

Другие вопросы по теме

Возникла проблема с тестированием моего смарт-контракта на твердость (с трюфелем)
Сделайте смарт-контракт для отслеживания обменного курса и принимайте платежи только на установленную сумму
Как проверить отправку отрицательных чисел в смарт-контракт?
Учетная запись отправителя не распознается в частной сети Ethereum
Умный контракт (Solidity) Аукцион, когда участники торгов абстрагируются от своих кошельков
Значение переменной состояния контракта надежности показывает странное значение при вызове из внешнего контрацептива
Как отправить wei / eth на адрес контракта? (с использованием теста javascript трюфеля)
Solidity: Как размер параметров функции влияет на стоимость газа?
Как создать новый контракт Ethereum / Solidity для каждого теста в javascript / truffle
Как развернуть несколько надежных смарт-контрактов, которые используют функции друг друга?