【发布时间】:2022-01-17 11:31:28
【问题描述】:
我正在尝试使用 web3 库从 websocket url 接收数据。但是,React Hooks 让我感到沮丧,因为它在使用 useState set 函数更新我的数组时重新渲染了整个 App 函数。如何将我的渲染功能与 websocket 订阅分开?我不想在使用 setState 时每次都重新订阅。
这是我的代码:
function App() {
console.log('init');
const [blocks, setBlock] = useState([]);
(async () => {
const web3 = new Web3(new
Web3.providers.WebsocketProvider('wss...'));
web3.eth.subscribe('newBlockHeaders', async (error, blockHeader) => {
const block = await web3.eth.getBlock(blockHeader.hash, true);
setBlock([...blocks, block.number]);
console.log(blocks);
});
})();
return (
<div className = "App">
<header className = "App-header">
<p>{ blocks }</p>
</header>
</div>
);
}
【问题讨论】:
标签: reactjs react-hooks use-state subscription web3