Pago Metamask en Reactjs

Estoy tratando de implementar un pago de metamáscara realmente básico y simple en reactjs. Esto es lo que hice, handleClick se activa con un botón:

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

No inserté ninguna verificación si metamask está allí porque quiero probar lo más simple posible para comprender mejor web3js y reactjs. no me sale ningun error pero no pasa nada

Respuestas (1)

Supongo que el problema es que está anulando la instancia web3 inyectada.

MetaMask debe inyectar la variable web3, por lo que con su segunda línea de código la anula, en su lugar, debe crear una nueva variable y configurar el proveedor usando web3 inyectado.

Prueba esto:

handleClick = () => { 
        let web3js = new Web3(window.web3.currentProvider); 
        web3js.eth.sendTransaction({
            to: '0xE08aa75AAE695c4622Cd430FbeBF4B97689d4Ee3',
            from: '0xf59F88E6eA4A937e228E4aaf378e96EDfb646B14',
            value: web3js.utils.toWei('1', 'ether'), 
        })      
  };
Gracias por su respuesta, pero si no agrego, let web3 = new Web3();obtengo un error 'web3' no está definido . (web3js importado conimport Web3 from 'web3';
Ah, lo siento, ¿puedes intentar hacer esto?let web3js = new Web3(window.web3.currentProvider)
muchas gracias, ahora funciona! este es mi código final:let web3 = new Web3(); let web3js = new Web3(window.web3.currentProvider) web3js.eth.sendTransaction({ to: '0xE08aa75AAE695c4622Cd430FbeBF4B97689d4Ee3', from: '0xf59F88E6eA4A937e228E4aaf378e96EDfb646B14', value: web3.utils.toWei('1', 'ether'),
También actualicé mi respuesta, puedes deshacerte de la primera let web3parte :) - el código debería funcionar exactamente como en mi respuesta (con suerte :))
no, sin dejar let web3 = new Web3();que me da 'web3' no está definido el error de todos modos
Sí, porque tuve un error aquí, value: web3.utils.toWei('1', 'ether'),solo vuelva a verificar la respuesta actualizada
ok, entonces el problema estaba usando web3 como variable. gracias