Лучший способ запросить функции просмотра в целостности из реакции с 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 часто срабатывает.
Как лучше всего это сделать?