Web3js
如何在 Drizzle 中監聽合約事件
我們以
SimpleStorage
鬆露盒自帶的合約為例drizzle-box
我們如何監聽事件
StorageSet
並將console.log
其發送到 JS 控制台?import SimpleStorage from './../build/contracts/SimpleStorage.json' const drizzleOptions = { web3: { block: false, fallback: { type: 'ws', url: 'ws://127.0.0.1:8545' } }, contracts: [ SimpleStorage ], events: { SimpleStorage: ['StorageSet'], }, polls: { accounts: 1500 } } export default drizzleOptions
我猜你使用 Metamask,所以問題可能如下:“The current provider doesn’t support subscriptions: MetamaskInpageProvider”。
我也沒有看到此錯誤消息,因為 drizzle 不會列印它。你可以看看這裡。這樣,您應該能夠自己/手動測試該事件訂閱。像這樣的東西:
drizzle.contracts.SimpleStorage.events .StorageSet({/* eventOptions */}, (error, event) => { console.log(error, event); }) .on('data', (event) => console.log(event)) .on('changed', (event) => console.log(event)) .on('error', (error) => console.log(error));
在這裡您可以找到 web3 事件的文件。
或者,您可以檢查交易收據中的事件。
我正在嘗試做類似的事情,但據我了解,Drizzle 還不支持這一點。這是我發現跟踪它的問題:https ://github.com/trufflesuite/drizzle/issues/147