问题在于run dev中的useAddress()函数,当控制台登录时,它返回未定义的、未指定的、然后地址,但是在run /start中,它只是返回未定义的。我该怎么解决这个问题。
import { useAddress } from "@thirdweb-dev/react";
import Head from 'next/head';
import Link from 'next/link';
import Username from '../components/Username';
import React from "react";
const Home = () => {
let address = useAddress();
console.log(address)
if (address) {
return (
<>
<Head>
<title>home</title>
<link rel="icon" href="/drum.svg" />
</Head>
<Username address={address} />
</>
);
} else {
return (
<>
<Head>
<title>home</title>
<link rel="icon" href="/drum.svg" />
</Head>
<Link href="/">
<a className="absolute pt-1 text-xl font-semibold transform -translate-x-1/2 top-1/2 left-1/2">click here to log in</a>
</Link>
</>
);
}
}
export default Home;
发布于 2022-07-05 19:44:11
命令式代码在反应中是不可预测的。您应该使用useEffect(()=>{console.log(address)},[]),而且在这两种设置中,它的工作方式可能是相同的。
发布于 2022-07-05 20:50:48
我希望这是可行的:
import { useAddress } from "@thirdweb-dev/react";
import Head from 'next/head';
import Link from 'next/link';
import Username from '../components/Username';
import React, {useState, useEffect} from "react";
const Home = () => {
const [address, setAddress] = useState(false)
useEffect(()=> {
setAddress(useAddress())
}, [])
if (address) {
return (
<>
<Head>
<title>home</title>
<link rel="icon" href="/drum.svg" />
</Head>
<Username address={address} />
</>
);
} else {
return (
<>
<Head>
<title>home</title>
<link rel="icon" href="/drum.svg" />
</Head>
<Link href="/">
<a className="absolute pt-1 text-xl font-semibold transform -translate-x-1/2 top-1/2 left-1/2">click here to log in</a>
</Link>
</>
);
}
}
export default Home;https://stackoverflow.com/questions/72874686
复制相似问题