如何与Ether.js一起在多个页面上连接元张并做出反应?

发布于 2025-02-05 20:48:31 字数 2405 浏览 1 评论 0原文

我的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文