我正在尝试使用wagmi的useSigner钩子。
我的项目是下一个JS项目,我使用彩虹工具包按钮连接。
如果我在一个具有url (如localhost:3000 )的页面上,则签名者在页面加载时加载,但如果我位于url (如localhost:3000?id=1 ),则签名者为空。
你可以从这里重新创建窃听器
我的_app.tsx看起来像这样
import {AppProps} from 'next/app';
import Head from 'next/head';
import '@rainbow-me/rainbowkit/styles.css';
import {
getDefaultWallets,
RainbowKitProvider,
darkTheme
} from '@rainbow-me/rainbowkit';
import {
configureChains,
createClient,
WagmiConfig,
} from 'wagmi';
import {alchemyProvider} from 'wagmi/providers/alchemy';
import {publicProvider} from 'wagmi/providers/public';
import {useState, useEffect} from "react";
import {polygonMumbai} from "@wagmi/chains";
export default function App(props: AppProps) {
const [user, setUser] = useState(null);
const {Component, pageProps} = props;
const {chains, provider, webSocketProvider} = configureChains(
[polygonMumbai],
[
alchemyProvider({apiKey: process.env.NEXT_PUBLIC_ALCHEMY_API_KEY!}),
publicProvider()
]
);
const {connectors} = getDefaultWallets({
appName: 'Dynamic Audio NFTs',
chains
});
const wagmiClient = createClient({
autoConnect: true,
connectors,
provider,
webSocketProvider
})
return (
<>
<Head>
<title>The Crypto Studio</title>
</Head>
<WagmiConfig client={wagmiClient}>
<RainbowKitProvider chains={chains} theme={darkTheme()}>
<Component {...pageProps} />
</RainbowKitProvider>
</WagmiConfig>
</>
);
}这是index.tsx
import {ConnectButton} from "@rainbow-me/rainbowkit";
import {useSigner} from "wagmi";
export default function Home() {
const {data: signer} = useSigner()
console.log("signer", signer)
return (
<>
<ConnectButton />
</>
)
}the package.json
{
"name": "rainbow-kit",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"@next/font": "13.0.7",
"@rainbow-me/rainbowkit": "^0.8.1",
"@types/node": "18.11.17",
"@types/react": "18.0.26",
"@types/react-dom": "18.0.9",
"ethers": "^5.7.2",
"next": "13.0.7",
"react": "18.2.0",
"react-dom": "18.2.0",
"typescript": "4.9.4",
"wagmi": "^0.9.4"
}
}发布于 2022-12-19 19:25:10
这个问题已经解决了,这里唯一需要做的就是
const {chains, provider, webSocketProvider} = configureChains(
[polygonMumbai],
[
alchemyProvider({apiKey: process.env.NEXT_PUBLIC_ALCHEMY_API_KEY!}),
publicProvider()
]
);
const {connectors} = getDefaultWallets({
appName: 'Dynamic Audio NFTs',
chains
});
const wagmiClient = createClient({
autoConnect: true,
connectors,
provider,
webSocketProvider
})需要放置在App函数之外。
所以现在,_app.tsx看起来就像
const {chains, provider, webSocketProvider} = configureChains(
[polygonMumbai],
[
alchemyProvider({apiKey: process.env.NEXT_PUBLIC_ALCHEMY_API_KEY!}),
publicProvider()
]
);
const {connectors} = getDefaultWallets({
appName: 'Dynamic Audio NFTs',
chains
});
const wagmiClient = createClient({
autoConnect: true,
connectors,
provider,
webSocketProvider
})
export default function App(props: AppProps) {
const [user, setUser] = useState(null);
const {Component, pageProps} = props;
return (
<>
<Head>
<title>The Crypto Studio</title>
</Head>
<WagmiConfig client={wagmiClient}>
<RainbowKitProvider chains={chains} theme={darkTheme()}>
<Component {...pageProps} />
</RainbowKitProvider>
</WagmiConfig>
</>
);
}https://ethereum.stackexchange.com/questions/141442
复制相似问题