Лучший способ запросить функции просмотра в целостности из реакции с ether.js?

js для взаимодействия с моим смарт-контрактом. У моего контракта есть такая функция, например:

        function getOfferById(uint256 _tokenId) public view returns (uint256) {
    require(_tokenId < MAX_B, "This tokenId does not exist");
    uint256 offer = bOffers[_tokenId];
    require(offer > 0, "There is no offer for this token");
    return offer;
}

Теперь, что нужно запрашивать эти данные при загрузке страницы или всякий раз, когда приходит новое событие, и эти данные могли измениться, я сделал это так:

      useEffect(() => {
    async function getOfferById() {
      if (myContracts) {
        const _getOfferById = myContracts.getOfferById;
        if (_getOfferById && id) {
          try {
            const _offer = await _getOfferById(id);
            setoffer(formatUnits(_offer, 'ether'));
          } catch (e) {
            setoffer(0);
          }
        }
      }
    }
    getOfferById();
  }, [myContracts, id, myEventOfferCreated, myEventOfferCanceled]);

Но таким образом я все время получаю много консольных ошибок из-за моей метамаски, потому что оператор require часто срабатывает.

Как лучше всего это сделать?

0 ответов

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