添加 @ant-design/web3-wagmi #79
Replies: 5 comments 6 replies
-
具体实现起来感觉我们还可以比 web3modal 更简单一些: import { WagmiProvider } from '@ant-design/web3-wagmi';
import { ConnectButton } from '@ant-design/web3';
default () => {
return (
<WagmiProvider config={ /* 这里就用 wagmi 的配置 */}>
<ConnectButton />
</WagmiProvider>
);
} 其实就是一个适配层,适配层就是基于 wagmi 来提供 antd-web3 组件要的接口和状态。 |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
用法上看看有没有什么建议 @jeasonstudio ? |
Beta Was this translation helpful? Give feedback.
-
仔细研究了一下 wagmi 的用法,感觉更简单的方式就是不改造 wagmi 的配置方式,只是基于 wagmi 的 hooks 来封装 import { WagmiConfig, createConfig, configureChains, mainnet } from 'wagmi';
import { publicProvider } from 'wagmi/providers/public';
import { MetaMaskConnector } from 'wagmi/connectors/metaMask';
import { InjectedConnector } from 'wagmi/connectors/injected';
import { WalletConnectConnector } from 'wagmi/connectors/walletConnect';
import { WagmiWeb3ConfigProvider } from '@ant-design/web3-wagmi';
import { ConnectButton } from '@ant-design/web3';
const { chains, publicClient, webSocketPublicClient } = configureChains(
[mainnet],
[publicProvider()],
);
const config = createConfig({
connectors: [
new InjectedConnector({ chains }),
new MetaMaskConnector(),
new WalletConnectConnector({
chains,
options: {
projectId: '...',
},
}),
],
autoConnect: true,
publicClient,
webSocketPublicClient,
});
function App() {
return (
<WagmiConfig config={config}>
<WagmiWeb3ConfigProvider>
<ConnectButton />
</WagmiWeb3ConfigProvider>
</WagmiConfig>
)
} 我们要实现的其实就是 或者可以这么理解,现在我们有了 import React from 'react';
import { Web3ConfigProvider } from '@ant-design/web3';
import { useConnect, useAccount } from 'wagmi';
export interface WagmiWeb3ConfigProviderProps {
children?: React.ReactNode;
}
export const WagmiWeb3ConfigProvider: React.FC<WagmiWeb3ConfigProviderProps> = ({ children }) => {
const { connectors } = useConnect();
const { acounts } = useAccount();
const wallets = React.useMemo(() => {
// 这里把 connectors 转换成 antd-web3 需要的格式
}, [connectors]);
return (
<Web3ConfigProvider wallets={wallets} acounts={acounts}>
{children}
</Web3ConfigProvider>
);
} 这样的话, 未来其他链也是类似,本质上我们要做的事情就是基于这个链的生态已经有的东西来适配 当然 |
Beta Was this translation helpful? Give feedback.
-
已经完成开发,后面可以先主推这种方式,相对可靠一些。 |
Beta Was this translation helpful? Give feedback.
-
在研究 web3modal 和 wagmi 源码的时候有了新的想法,感觉我们还是应该先搞一个
@ant-design/web3-wagmi
,基于 wagmi 给我们的组件提供一套 universal api,原因如下:@ant-design/web3-ethereum
会更通用,理论上可以和 ethers.js , web3.js 和 wagmi 一起用,但是要实现得完整还是有很多细节要处理。但是如果只考虑 wagmi 的话,实现起来就容易多了,不需要考虑通用型,只要通过 wagmi 把我们定义的 universal api 实现就好了。@jeasonstudio 你怎么看。
Beta Was this translation helpful? Give feedback.
All reactions