web3与Metamask同步切换链

以前遇到一个需求:跨链转换代币,可能从以太链转到自己的链。再从自己的链转回以太链。
期望:当本地切换的时候,metamask的网络也跟着切换
推荐一个网络id和链名称的git库:https://github.com/ethereum-l...
大家都是老码农了,废话就不多说了。直接上代码
【web3与Metamask同步切换链】最完美的方式:

//添加网络 chainId 你需要切换的id addOrChangeNetWork(chainId) { const toHex = (num) => { return '0x' + num.toString(16) } const chain = require(`@/moke/json/eip155-${chainId}.json`) let net_data = https://www.it610.com/article/{ chainId: toHex(chain.chainId), chainName: chain.name, nativeCurrency: { name: chain.nativeCurrency.name, symbol: chain.nativeCurrency.symbol, decimals: chain.nativeCurrency.decimals }, rpcUrls: chain.rpc, blockExplorerUrls: [chain.explorers && chain.explorers.length> 0 && chain.explorers[0].url ? chain.explorers[0].url : chain.infoURL] } web3.eth.getAccounts((error, accounts) => { window.ethereum .request({ method: 'wallet_addEthereumChain', params: [net_data, accounts[0]] }) .then((result) => { console.log(result, '返回数据') }) .catch((error) => { console.log(error,'错误数据') }) }) }

简单的方式:
window.ethereum.request({ method: 'wallet_switchEthereumChain', params: [ { chainId: Web3.utils.numberToHex(1) //链id } ] })

收工!

    推荐阅读