几个星期以来,我一直在为智能合约而苦苦挣扎,我正在认真地取得进展,但我被困在了这一点上......
class App extends Component {
async componentWillMount() {
await this.loadWeb3()
await this.loadBlockchainData()
}
async loadBlockchainData() {
const web3 = window.web3
const accounts = await web3.eth.getAccounts()
this.setState({ account: accounts[0] })
const networkId = await web3.eth.net.getId()
const Musketeer = Musketeer.networks[networkId]
if(Musketeer) {
const Musketeer = new web3.eth.Contract(Musketeer.abi, Musketeer.address)
/// I DONT NEED THIS PART ANYMORE I"LL SKIP DISPLAYING THE BALANCE ///
this.setState({ Musketeer })
let MusketeerBalance = await Musketeer.methods.balanceOf(this.state.account).call()
this.setState({ MusketeerBalance: MusketeerBalance.toString() })
//////////////////////////////////
} else {
window.alert('Musketeer contract not deployed to detected network.')
}
this.setState({ loading: false })
}
async loadWeb3() {
if (window.ethereum) {
window.web3 = new Web3(window.ethereum)
await window.ethereum.enable()
}
else if (window.web3) {
window.web3 = new Web3(window.web3.currentProvider)
}
else {
window.alert('Non-Ethereum browser detected. You should consider trying MetaMask!')
}
}
我在这里尝试将合同火枪手放在 App.js 中,但我不完全明白我必须做些什么来整合它。如果有人能用尼安德特人的语言向我解释这一点,我会感激我的余生..我现在根本不明白。
提前致谢!
答案 0 :(得分:1)
从 React App.js 连接到此合约的步骤如下:
先决条件:合同已部署并且您拥有它的地址。如果您使用的是松露,truffle develop
那么 truffle migrate --reset
应该在本地部署您的合约。见this truffle blog。
web3.eth.getAccounts()
的 web3 对象和帐户对象放入您的状态查看此 github repo 并添加您需要的内容。