Оплата метамаски в Reactjs

Я пытаюсь реализовать действительно простой и простой платеж метамаски в reactjs. Это то, что я сделал, handleClick запускается кнопкой:

handleClick = () => { 
        let web3 = new Web3(); 
        window.web3 = new Web3(web3.currentProvider);
        web3.eth.sendTransaction({
            to: '0xE08aa75AAE695c4622Cd430FbeBF4B97689d4Ee3',
            from: '0xf59F88E6eA4A937e228E4aaf378e96EDfb646B14',
            value: web3.utils.toWei('1', 'ether'), 
        })      
  };

Я не вставлял никаких проверок наличия метамаски, потому что хочу попробовать самую простую вещь, чтобы лучше понять web3js и reactjs. Я не получаю никаких ошибок, но ничего не происходит

Ответы (1)

Я предполагаю, что проблема в том, что вы переопределяете внедренный экземпляр web3.

Переменная web3 должна быть введена MetaMask, поэтому во второй строке кода вы переопределяете ее, вместо этого вы должны создать новую переменную и установить провайдера, используя внедренную web3.

Попробуй это:

handleClick = () => { 
        let web3js = new Web3(window.web3.currentProvider); 
        web3js.eth.sendTransaction({
            to: '0xE08aa75AAE695c4622Cd430FbeBF4B97689d4Ee3',
            from: '0xf59F88E6eA4A937e228E4aaf378e96EDfb646B14',
            value: web3js.utils.toWei('1', 'ether'), 
        })      
  };
Спасибо за ваш ответ, но если я не добавлю, let web3 = new Web3();я получу ошибку «web3» не определен . (web3js, импортированный сimport Web3 from 'web3';
Ах, извините, вы можете попробовать сделать это:let web3js = new Web3(window.web3.currentProvider)
большое спасибо, теперь работает! это мой окончательный код:let web3 = new Web3(); let web3js = new Web3(window.web3.currentProvider) web3js.eth.sendTransaction({ to: '0xE08aa75AAE695c4622Cd430FbeBF4B97689d4Ee3', from: '0xf59F88E6eA4A937e228E4aaf378e96EDfb646B14', value: web3.utils.toWei('1', 'ether'),
Я также обновил свой ответ, вы можете избавиться от первой let web3части :) - код должен работать точно так же, как в моем ответе (надеюсь :))
нет, без let это все равно let web3 = new Web3();дает мне ошибку «web3» не определена
Да, потому что у меня здесь была ошибка, value: web3.utils.toWei('1', 'ether'),просто перепроверьте обновленный ответ
Итак, проблема заключалась в использовании web3 в качестве переменной. Спасибо