【问题标题】:How to integrate Phantom wallet in react project?如何在 React 项目中集成 Phantom 钱包?
【发布时间】:2022-11-27 14:37:56
【问题描述】:

我实际上希望将 phantom 钱包集成到我的自定义 hand 网站中。由于我是 Web 3 的新手,我刚刚使用过 Metamask,不确定 Solana 和 Phantom 钱包是什么。

【问题讨论】:

    标签: reactjs blockchain smartcontracts solana phantom-wallet


    【解决方案1】:

    写一个提供者,然后用这个提供者包装你的 _app:

    import {
      ConnectionProvider,
      WalletProvider,
    } from '@solana/wallet-adapter-react'
    import { WalletModalProvider } from '@solana/wallet-adapter-react-ui'
    import { PhantomWalletAdapter } from '@solana/wallet-adapter-wallets'
    import { useMemo } from 'react'
    
    
    const WalletConnectionProvider = ({ children }) => {
      const endpoint = useMemo(() => 'https://api.devnet.solana.com', [])
    
      const wallets = useMemo(() => [new PhantomWalletAdapter()], [])
    
      return (
        <ConnectionProvider endpoint={endpoint}>
          <WalletProvider wallets={wallets} autoConnect>
            <WalletModalProvider>{children}</WalletModalProvider>
          </WalletProvider>
        </ConnectionProvider>
      )
    }
    
    export default WalletConnectionProvider
    

    或者您手动检查 window.solana 连接到 window.ethereum 的方式

    const isWalletConnected = async () => {
        try {
          const { solana } = window;
          if (solana) {
            if (solana.isPhantom) {
              console.log("phantom wallet found");
              // When using this flag, Phantom will only connect and emit a connect event if the application is trusted. Therefore, this can be safely called on page load for new users, as they won't be bothered by a pop-up window even if they have never connected to Phantom before.
              // if user already connected, { onlyIfTrusted: true }
              const response = await solana.connect({ onlyIfTrusted: false });
              console.log(
                "public key",
                response.publicKey.toString()
              );
              setWalletAddress(response.publicKey.toString());
            } else {
              alert("Please install phantom wallet");
            }
          }
        } catch (error) {
          console.log(error);
        }
      };
    

    【讨论】:

      猜你喜欢
      • 2022-06-29
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 2022-08-09
      • 2018-07-30
      相关资源
      最近更新 更多