【发布时间】:2021-07-13 03:00:21
【问题描述】:
我是 React 新手,我不明白为什么我的应用会渲染 2 或 8 次。
我正在使用 window.ethereum 与 MetaMask 进行交互,并在我更改 MetaMask 中的一个帐户时触发一个侦听器。这应该只会触发 console.logs 一次,但它们会被触发 8 次。
如果我删除 useEffect 他们会被解雇 2 次。所有应用都没有其他 useEffects。
useEffect((loading) => {
let isMounted = true;
setDarkMode(JSON.parse(localStorage.getItem('isDark')));
setLoading(true);
loadBloackchainData(isMounted, loading);
// cleanup
return () => (isMounted = false);
}, []);
const ethereum = window.ethereum
ethereum.on('accountsChanged', function (accounts) {
console.log('is metamask installed?', ethereum.isMetaMask);
console.log('ethereum.networkVersion : ', ethereum.networkVersion );
console.log('ethereum.selectedAddress : ', ethereum.selectedAddress );
});
为什么会被解雇8次?
【问题讨论】:
标签: reactjs event-handling rendering