如何防止弹出元掩码?
How can I prevent metamask from popping up?
我在 youtube 上学习了关于如何创建一个按钮来连接 metamask 和我的 Dapp 的教程,我遇到了一个问题,当我启动 Dapp metamask 弹出窗口时,甚至在我点击按钮连接它之前,我试图从 app.js 中删除 web3.js 代码,因为我知道是“web3 = new Web3(window.ethereum);”谁让 metamask 弹出,但我在 App.js.
中遇到了另一个问题
Index.js代码
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import { Web3ReactProvider } from '@web3-react/core';
import Web3 from "web3";
// get and inject web3 provider
const getLibrary = (provider) => {
return new Web3(provider)
};
ReactDOM.render(
<React.StrictMode>
<Web3ReactProvider getLibrary={getLibrary}>
<App />
</Web3ReactProvider>
</React.StrictMode>,
document.getElementById('root')
);
App.js代码
import web3 from './web3';
import { useWeb3React } from "@web3-react/core";
import { injected } from "./components/Wallet/connector";
const { active, account, library, connector, activate, deactivate } = useWeb3React();
// Connect to metamask
const Connect = async () => {
try {
await activate(injected);
} catch(err) {
console.log(err)
}
}
const winnerHandler = async () => {
// get the accounts
const account = await web3.eth.getAccounts();
// Call the pickWinner function from the contract
await lottery.methods.pickWinner().send({
from: account[0]
});
}
<main>
<Navbar>
<Left>
<Logo>LTR</Logo>
</Left>
<Right>
{active ? <Button widthBtn hightBtn >{account.substring(0,13)}...</Button> :
<Button widthBtn hightBtn onClick={Connect}>Connect MetaMask</Button>}
</Right>
</Navbar>
</main>
web3.js代码
import Web3 from "web3";
let web3;
if (window.ethereum && window.ethereum.isMetaMask) {
console.log('MetaMask Here!');
web3 = new Web3(window.ethereum);
window.ethereum.request({ method: 'eth_requestAccounts'})
} else {
console.log('Need to install MetaMask');
window.Error('Please install MetaMask browser extension to interact');
}
export default web3;
我今天刚遇到这个问题。您需要更改 app.js
上的 onClick 中的功能
发件人:
<Button widthBtn hightBtn onClick={Connect}>Connect MetaMask</Button>}
收件人:
<Button widthBtn hightBtn onClick={()=>Connect}>Connect MetaMask</Button>}
我在 youtube 上学习了关于如何创建一个按钮来连接 metamask 和我的 Dapp 的教程,我遇到了一个问题,当我启动 Dapp metamask 弹出窗口时,甚至在我点击按钮连接它之前,我试图从 app.js 中删除 web3.js 代码,因为我知道是“web3 = new Web3(window.ethereum);”谁让 metamask 弹出,但我在 App.js.
中遇到了另一个问题Index.js代码
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import { Web3ReactProvider } from '@web3-react/core';
import Web3 from "web3";
// get and inject web3 provider
const getLibrary = (provider) => {
return new Web3(provider)
};
ReactDOM.render(
<React.StrictMode>
<Web3ReactProvider getLibrary={getLibrary}>
<App />
</Web3ReactProvider>
</React.StrictMode>,
document.getElementById('root')
);
App.js代码
import web3 from './web3';
import { useWeb3React } from "@web3-react/core";
import { injected } from "./components/Wallet/connector";
const { active, account, library, connector, activate, deactivate } = useWeb3React();
// Connect to metamask
const Connect = async () => {
try {
await activate(injected);
} catch(err) {
console.log(err)
}
}
const winnerHandler = async () => {
// get the accounts
const account = await web3.eth.getAccounts();
// Call the pickWinner function from the contract
await lottery.methods.pickWinner().send({
from: account[0]
});
}
<main>
<Navbar>
<Left>
<Logo>LTR</Logo>
</Left>
<Right>
{active ? <Button widthBtn hightBtn >{account.substring(0,13)}...</Button> :
<Button widthBtn hightBtn onClick={Connect}>Connect MetaMask</Button>}
</Right>
</Navbar>
</main>
web3.js代码
import Web3 from "web3";
let web3;
if (window.ethereum && window.ethereum.isMetaMask) {
console.log('MetaMask Here!');
web3 = new Web3(window.ethereum);
window.ethereum.request({ method: 'eth_requestAccounts'})
} else {
console.log('Need to install MetaMask');
window.Error('Please install MetaMask browser extension to interact');
}
export default web3;
我今天刚遇到这个问题。您需要更改 app.js
上的 onClick 中的功能发件人:
<Button widthBtn hightBtn onClick={Connect}>Connect MetaMask</Button>}
收件人:
<Button widthBtn hightBtn onClick={()=>Connect}>Connect MetaMask</Button>}