Я следую учебному пособию о том, как создать приложение реакции, используя цепочку блоков Ethereum.У меня есть собственный локальный блокчейн для тестирования, и я успешно добавил к нему свой контракт.Теперь я хочу получить некоторую информацию из метода в этом контракте и отобразить ее с помощью реакции.Однако, когда я беру контракт и устанавливаю состояние, реакция возвращает объект вместо «AbstractContract».Может кто-нибудь сказать мне, почему это происходит?
class App extends Component {
componentWillMount() {
this.loadBlockchainData()
}
async loadBlockchainData() {
//grabbing the MetaMask network data
const web3 = new Web3(Web3.givenProvider || "http://localhost:7545")
const network = await web3.eth.net.getNetworkType()
console.log("network:", network)
//pulling the wallet/accounts from MetaMask
const accounts = await web3.eth.getAccounts()
console.log("account:", accounts[0]);
this.setState({ account: accounts[0] })
//Grabbing the contract info from blockchain
const todoList = new web3.eth.Contract(TODO_LIST_ABI, TODO_LIST_ADDRESS)
console.log("List address", TODO_LIST_ADDRESS)
console.log("List add", todoList.address)
console.log("todoList", todoList)
this.setState({todoList})
//Calling Methods from Contract
const taskCount = await todoList.methods.taskCount().call()
console.log("taskCount", taskCount)
this.setState({taskCount})
}
constructor(props) {
super(props)
this.state = {
account: '',
taskCount: 0
}
}
render() {
return (
<div className="container">
<h1>Hello, World!</h1>
<p>Your account: {this.state.account}</p>
<p>Your Task Count: {this.state.taskCount}</p>
</div>
);
}
}
Это возвращаемые журналы:
return address is :0xBcA4622f7dC5205cf08454cE27B87966286184d2
todoList:
Object { providerResolver: {…}, givenProvider: Proxy, _currentProvider: {…}, _defaultAccount: undefined, _defaultBlock: "latest", _transactionBlockTimeout: 50, _transactionConfirmationBlocks: 24, _transactionPollingTimeout: 750, _defaultGasPrice: undefined, _defaultGas: undefined, … }
taskCount:
Object { _hex: "0x01", … }
Проблема: todoList должен быть «AbstractContract» taskCount начинается с 0, но это должно быть 1, так как задача являетсясоздается при выполнении договора.
Вышла ошибка: Objects are not valid as a React child (found: object with keys {_hex}). If you meant to render a collection of children, use an array instead.