Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 第105:14行:';accountSelector';未定义无未定义_Javascript_Reactjs - Fatal编程技术网

Javascript 第105:14行:';accountSelector';未定义无未定义

Javascript 第105:14行:';accountSelector';未定义无未定义,javascript,reactjs,Javascript,Reactjs,有人能简单地解释一下哪里出了问题,这样我就知道如何解决这个问题,下次遇到它时就可以处理它了。 我已经浏览了stackoverflow的所有相关问题,但仍然无法解决,如果我遗漏了一个答案,请将其链接。 我过去也有过这个错误,但通常这只是因为我输入了一个错误(例如,大写而不是小写),或者没有正确地导入某些内容,但就我所知,这次不是这样。 第一个代码app.js 第二个代码interactions.js 这是我的密码 import React, { Component } from 'react';

有人能简单地解释一下哪里出了问题,这样我就知道如何解决这个问题,下次遇到它时就可以处理它了。 我已经浏览了stackoverflow的所有相关问题,但仍然无法解决,如果我遗漏了一个答案,请将其链接。 我过去也有过这个错误,但通常这只是因为我输入了一个错误(例如,大写而不是小写),或者没有正确地导入某些内容,但就我所知,这次不是这样。 第一个代码app.js 第二个代码interactions.js

这是我的密码

import React, { Component } from 'react';
import logo from './logo.svg';
import './App.css';
import Navbar from './Navbar'
import Web3 from 'web3';   
import { connect } from 'react-redux'
// import Token from '../abis/Token.json'
import {
  loadWeb3,
  loadAccount,
  loadToken,
  loadExchange
} from '../store/interactions'

class App extends Component {
  componentWillMount() {    
    this.loadBlockchainData(this.props.dispatch)
  }
async loadBlockchainData(dispatch) {
    const web3 = loadWeb3(dispatch)
    const network = await web3.eth.net.getNetworkType()
    const networkId = await web3.eth.net.getId()
    const accounts = await loadAccount(web3, dispatch) // <<--
    const token = loadToken(web3, networkId, dispatch)
    loadExchange(web3, networkId, dispatch)
  }
// ......................

function mapStateToProps(state) {
  return {
    account: accountSelector(state)
  }
}

export default connect(mapStateToProps)(App);


我现在不知道为什么这会发生在我身上 但是如果您知道这个问题,请告诉我这个问题。

更换这个

用这个

您正在传递变量中的完整状态,而不是访问


为了便于参考,请查阅官方文档,以便更好地理解

问题似乎在于您没有在任何地方定义或导入
accountSelector
函数

通常在reducer定义文件中定义Redux选择器函数:它们将当前Redux存储状态作为参数(以及可选的连接组件道具),并返回要在MapStateTrops对象属性中使用的值。 前


您可以在上阅读有关选择器的更多信息

是否确定此函数mapStateToProps(state){return{account:accountSelector(state)}?如果没有,则将其函数mapstatetops(state){return{account:state.accountSelector}}我发布了一个解决方案,如果它有助于您投票,请投赞成票。
accountSelector
似乎是一个Redux选择器函数,因此可以调用它并将整个商店状态传递给它。这里的问题似乎是,
accountSelector
没有在任何地方定义或导入。
import Web3 from 'web3'
import {
  web3Loaded,
  web3AccountLoaded,
  tokenLoaded,
  exchangeLoaded
} from './actions'
import Token from '../abis/Token.json'
import Exchange from '../abis/Exchange.json'

export const loadWeb3 = (dispatch) => {
  const web3 = new Web3(Web3.givenProvider || 'http://localhost:7545')
  dispatch(web3Loaded(web3))
  return web3
}

export const loadAccount = async (web3, dispatch) => {
  const accounts = await web3.eth.getAccounts()
  const account = accounts[0]
  dispatch(web3AccountLoaded(account))
  return account
}

export const loadToken = async (web3, networkId, dispatch) => {
    try {
        const token = new web3.eth.Contract(Token.abi, Token.networks[networkId].address)       // new 이거 의존성(버전) 문제 이거 조심!!!!!
        dispatch(tokenLoaded(token))
        return token
    } catch (error) {
        window.alert('Contract not deployed to the current network. Please select another network with Metamask.')
        return null
    }
} 

export const loadExchange = async (web3, networkId, dispatch) => {
  try {
    const exchange = new web3.eth.Contract(Exchange.abi, Exchange.networks[networkId].address)      
    dispatch(exchangeLoaded(exchange))
    return exchange
  } catch (error) {
    window.alert('Contract not deployed to the current network. Please select another network with Metamask.')
    return null
  }
}
function mapStateToProps(state) {
  return {
    account: accountSelector(state)
  }
}
function mapStateToProps(state) {
  return {
    account: state.accountSelector
  }
}
export const accountSelector = (state) => state.account