如何与Ether.js一起在多个页面上连接元张并做出反应?
我的Navbar看起来像这样,我想在更改页面时保持元掩体连接(我使用React Router dom从页面上到页面)。我尝试了多种解决方案,但是它不起作用,因为我在本地,或者是因为我正在使用ethers而不是Web3 :(
import { Box, Button, Flex, Image, Spacer } from '@chakra-ui/react';
import Logo from "../../assets/img/bitook-dark.png";
import { Link } from 'react-router-dom';
const NavBar = ({ accounts, setAccounts }) => {
const isConnected = Boolean(accounts[0]);
async function connectAccount() {
if (window.ethereum) {
const accounts = await window.ethereum.request({
method: "eth_requestAccounts",
});
setAccounts(accounts);
}
}
return (
<Flex justify="space-between" align="center" padding="30px">
{/* Left Side - Social Medias Icons */}
<Flex justify="space-around" width="40%" padding="0 75px">
<img className="logoHome" src={Logo} alt="logo"/>
</Flex>
{/* Right Side - Sections and Connect */}
<Flex justify="space-between" align="center" width="50%" padding="30px">
<Link className="navLink" to='/' >Home</Link>
<Spacer />
<Link className="navLink" to='/tournament' >Tournament</Link>
<Spacer />
<Link className="navLink" to='/about' >About</Link>
<Spacer />
<Link className="navLink" to='/medium' >Medium</Link>
<Spacer />
{/* Connect */}
{isConnected ? (
<navlink className="metamaskButton">Connected</navlink>
) : (
<Button
backgroundColor="#D6517D"
borderRadius="5px"
boxShadow="0px 2px 2px 1px #0F0F0F"
color="white"
cursor="pointer"
fontFamily="inherit"
padding="15px"
margin="0 15px"
onClick={connectAccount}
>
Connect
</Button>
)}
</Flex>
</Flex>
);
};
export default NavBar;
感谢您的帮助:D
My NavBar looks like this, and I would like to keep metamask connected when I change pages ( I use react router dom to go from page to page ). I tried multiple solutions but either it's not working because I'm in local or because I'm using ethers and not web3 :(
import { Box, Button, Flex, Image, Spacer } from '@chakra-ui/react';
import Logo from "../../assets/img/bitook-dark.png";
import { Link } from 'react-router-dom';
const NavBar = ({ accounts, setAccounts }) => {
const isConnected = Boolean(accounts[0]);
async function connectAccount() {
if (window.ethereum) {
const accounts = await window.ethereum.request({
method: "eth_requestAccounts",
});
setAccounts(accounts);
}
}
return (
<Flex justify="space-between" align="center" padding="30px">
{/* Left Side - Social Medias Icons */}
<Flex justify="space-around" width="40%" padding="0 75px">
<img className="logoHome" src={Logo} alt="logo"/>
</Flex>
{/* Right Side - Sections and Connect */}
<Flex justify="space-between" align="center" width="50%" padding="30px">
<Link className="navLink" to='/' >Home</Link>
<Spacer />
<Link className="navLink" to='/tournament' >Tournament</Link>
<Spacer />
<Link className="navLink" to='/about' >About</Link>
<Spacer />
<Link className="navLink" to='/medium' >Medium</Link>
<Spacer />
{/* Connect */}
{isConnected ? (
<navlink className="metamaskButton">Connected</navlink>
) : (
<Button
backgroundColor="#D6517D"
borderRadius="5px"
boxShadow="0px 2px 2px 1px #0F0F0F"
color="white"
cursor="pointer"
fontFamily="inherit"
padding="15px"
margin="0 15px"
onClick={connectAccount}
>
Connect
</Button>
)}
</Flex>
</Flex>
);
};
export default NavBar;
Thanks for the help :D
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论