Как отобразить на веб-интерфейсе результат "method.name.call ()" web3 - метода - PullRequest
0 голосов
/ 17 апреля 2020

Я разрабатываю систему проверки документов с ReactJS и надежностью - умный контракт. Я хочу отобразить результат метода get().call() моего умного контракта во внешнем интерфейсе с всплывающим окном или даже с простым текстом.

Мой вопрос: как я могу это сделать? Мой .get().call() метод работает нормально без каких-либо проблем.

Проверьте изображение ниже, это мой код на данный момент. Я использую console.log() для отображения результата.

enter image description here

1 Ответ

0 голосов
/ 17 апреля 2020

Если функция console.log отображает ваш код в консоли, ваши коды работают хорошо, теперь вам нужно изменить состояние с помощью функции this.setState или useState для повторного рендеринга компонента. потому что в архитектуре ReactJS изменение state вызывает изменение интерфейса. если ваш компонент является компонентом класса:

import React, { Component } from 'react';

~~~

class YourComponentName extends Component {
  constructor() {
    super();

    this.state = {
      result: '',
      ~~~
      ~~~
    };
  }

  onSubmitGet = async (event) => {
    event.preventDefault();
    cosnt hash = document.getElementById('hash').value;

    await this.state.contract.methods
      .get(hash)
      .call({ form: this.state.address })
      .then(res => this.setState({ result: res }))
  };

  ~~~

  render() {
    const { result } = this.state;

    return (
      <>
        <button onClick={this.onSubmitGet}>GET</button>
        <div>{result}</div>
      </>
    );
  }
};

The `~~~` means some other codes. actually, with using `setState` the `<div>{result}</div>` will change and show your result.
...