用途:在新建或已有 React 应用中接入 MetaMask 钱包,实现连接、签名、发送、账户/链/余额状态跟踪与网络切换。
主要能力:通过 createEVMClient 初始化客户端;用 getInfuraRpcUrls 生成 Infura RPC 映射并混入自定义 RPC;用 client.connect / disconnect、client.switchChain、client.getProvider().request 完成连接、断连、切链和任意 EIP-1193 调用;用 useState/useEffect/useRef 管理账户、chainId、余额与连接状态;监听 accountsChanged、chainChanged、disconnect 事件。
使用方式:安装 npm install @metamask/connect-evm @metamask/connect-multichain(后者为传递依赖,显式装无害但不必须);在 src/metamask.ts 中只创建一次客户端并导出 Promise 复用,切勿每次渲染调用;在组件中 useRef 持有实例、useState 存状态,在 useEffect 中提前注册监听器;连接后可用 provider.request 调用 eth_blockNumber、eth_chainId、eth_accounts、eth_getBalance、eth_getTransactionCount 等;链 ID 必须用十六进制字符串('0x1'、'0x89'、'0xaa36a7');切链可用 chainConfiguration 回退触发 wallet_addEthereumChain,且其 chainId 必须与目标链一致。
限制与注意:connect() 始终自动包含以太坊主网 0x1;provider 在连接前即存在,但节点路由读取(余额、区块号等)需已选链,否则抛 No chain ID selected,仅 eth_chainId 与 eth_accounts 在连接前安全;错误码 4001 表示用户拒绝,需友好重试,-32002 表示请求已挂起,不应重复调用 connect();重复或多版本依赖会在运行时告警。资料未提供收费、价格和支持平台等其它信息。