反应,传递带有值的函数

时间:2018-11-27 23:00:16

标签: reactjs components react-props

我必须归档文件并保持代码整洁,我去转移了一个非常重要的功能,该功能将在其他文件中使用到它自己的文件中。但是我需要在主文件中调用该函数,但我不知道如何传递它。我已经坚持了几个小时。所以我很感激。

这也是我也要传递功能的文件:

import React, { Component } from 'react';
import './App.css';
import ERC20ABI from './blockchain/ERC20ABI.js';
import goweb3 from './blockchain/goweb3.js'
import ethweb3 from './blockchain/ethweb3.js'
import parseAddress from './TokenBalance';



class App extends Component {



deploSC = async () => {
  const accounts = await goweb3.eth.getAccounts();
//const code = ethweb3.eth.getCode(document.getElementById('smartcontract').value); Not working
  goweb3.eth.sendTransaction({
      from: accounts[0],
      data: document.getElementById('scbytecode').value
  }, function(error, hash){
      console.log(error,hash);
  });
}

  render() {
    return (
      <div className="App">
        <header className="App-header">
          <p>
            Enter the smart contract address:
            <input type="text" name="name" placeholder="Smart Contract" value="0" id="smartcontract" className="nice-textbox"/>
            <input type ="text" placeholder="Smart Contract Bytecode" name="name" id ="scbytecode"className="nice-textbox"/>
            <button id="button" onClick={this.address}>Submit!</button>
            <button onClick={this.deploSC}> Deploy Sc</button>
          </p>
        </header>
      </div>
    );
  }
}

export default App;

这是我创建函数的文件:

import ERC20ABI from './blockchain/ERC20ABI.js';
import goweb3 from './blockchain/goweb3.js'
import ethweb3 from './blockchain/ethweb3.js'


  export const parseAddress(){
      var results
      var addresses = [];

      var contractObj = new ethweb3.eth.Contract(ERC20ABI,document.getElementById('smartcontract').value));
        contractObj.getPastEvents(
            'Transfer' || 'allEvents',
            {
                fromBlock: 0,
                toBlock: 'latest'
            },
            function(err,res){
                console.log(err,res);
                results = res
            }
          );
          for(var i = 0; i < 10; i++) {
            addresses.push([results[i].returnValues.from,results[i].returnValues.value]);
          }
          console.log(addresses);
          console.log(addresses.length)
          return addresses
    };

1 个答案:

答案 0 :(得分:0)

您正在尝试导入不带括号的命名导出。如果将导入语句更改为此,则应该可以:

import { parseAddress } from './TokenBalance';

或者,您可以使用默认导出,也可以不使用方括号导入。

查看此内容:https://hackernoon.com/import-export-default-require-commandjs-javascript-nodejs-es6-vs-cheatsheet-different-tutorial-example-5a321738b50f