ERC20과 프론트엔드연결 지갑 변경 관련 질문 입니다!
367
2 asked
안녕하세요!! 강의 도움 많이 받고 있습니다!!
다름이 아니라 ERC20 프론트엔드연결1 강의 내용 관련해 질문드리려고 합니다.
강의와 마찬가지로 useEffect 훅 안에
window.ethereum.on("accountsChanged", () => {
setUp();
}
를 입력해 메타마스크 계정이 바뀔 때마다 setUp 함수가 실행되도록 했습니다.
강의에서는 지갑 계정을 바꾸고 getAll 버튼을 누르면 변경된 지갑 주소가 잘 찍히는 것을 확인했습니다.
그런데 코드 치고 직접 실습하는 과정에서 문제가 발생했습니다.
강의에서처럼 getAll 버튼을 누르면 변경된 지갑 주소가 찍히는 것을 기대했으나 지갑이 변경되어도 변경 이전 지갑 주소가 찍힙니다...
일단은 window.ethereum.on("accountsChanged", () => { window.location.reload(); })
를 통해 해결은 했으나... 리로드 되면서 화면전환되는게 너무 거슬려서 디원님처럼 문제를 해결하고 싶어 질문드립니다!!! accountsChanged 이벤트핸들러가 업데이트 되면서 사용법이 변경된건지... 아니면 제가 무엇을 놓치고 있는지 감이 오지 않습니다..🥲(메타마스크 docs에는 accountsChanged 핸들러 안 콜백함수에 accounts 인자가 있더라구요...!)
직접 작성한 코드입니다.

Answer 2
0
네, 정말 이상하네요.
현재 같은 코드로 해보니, 제 쪽에서는 잘 돌아가고 있습니다...😂
혹시 getWeb3.js 파일을 제가 볼 수 있을까요 :) ??
0
new Promise 바로 밑에,
window.addEventListener("load", async () =>
...
}
때문에 그런거 같아요 :)
이 부분때문에, 메타마스크 주소를 변경해도 주소를 못 들고 온거같아요.
페이지를 로딩할 때 마다, 메타마스크의 주소를 들고 와야한다고 되어있어요 :)
window.addEventListener("load", async () =>
...
}
이 부분을 제거하시고, 아래와 같이 바로 쓰시면 될 거같아요 :)
import Web3 from "web3";
const getWeb3 = () =>
new Promise(async (resolve, reject) => {
// Wait for loading completion to avoid race conditions with web3 injection timing.
// Modern dapp browsers...
if (window.ethereum) {
const web3 = new Web3(window.ethereum);
try {
// Request account access if needed
await window.ethereum.request({ method: "eth_requestAccounts" });
// Accounts now exposed
resolve(web3);
} catch (error) {
reject(error);
}
}
// Legacy dapp browsers...
else if (window.web3) {
// Use Mist/MetaMask's provider.
const web3 = window.web3;
console.log("Injected web3 detected.");
resolve(web3);
}
// Fallback to localhost; use dev console port by default...
else {
const provider = new Web3.providers.HttpProvider("http://127.0.0.1:8545");
const web3 = new Web3(provider);
console.log("No web3 instance injected, using Local web3.");
resolve(web3);
}
});
export default getWeb3;
혹시 해결 안되신다면, 댓글 부탁드려요 :))
2025년으로 업데이트된 이더리움 마스터링 강의 내용에 대한 문의
0
51
2
실습하는 영상은 없는 건가요?
0
78
3
ova 구글 드라이브 404
0
45
1
LAYER2
0
92
1
Web3.js1
0
125
2
컴파일 및 배포
0
175
1
컴파일 및 배포
0
190
4
rinkeby testnet 사용
0
134
1
강의 업데이트 문의
1
498
1
fallback
1
443
1
pure view
1
450
1
SafeMath 함수
1
560
1
솔리디티
1
445
1
안녕하세요 강사님 질문이 있습니다
1
312
1
function 매개변수에 관한 질문이 있습니다
1
326
2
가스비 질문이 있습니다
1
357
2
Ownable에 대해서 질문이 있습니다
1
350
1
ERC20과 프론트엔드 연결 테스트 코드 질문입니다.
1
215
1
migration 질문
0
560
1
Chai와 Chai BN강의 부분이 50분 강의로 되어 있습니다.
0
231
1
강의가 일부분 누락되어 있습니다(해결)
0
226
1
truffle react box 질문입니다
0
309
1
expect 테스트가 정상적으로 동작하지 않습니다
1
192
1
솔리디티 깨부수기 강의 순서
1
198
1


도무지 감이 오질 않네요 🤣
dependency array 추가하고 실행했는데도 작동하질 않습니다...😂