第 105:14 行:"帐户选择器"未定义 no-undef



有人可以用简单的术语解释出了什么问题,以便我知道如何解决这个问题,并在下次遇到时处理它。 我已经浏览了我在 stackoverflow 上可以找到的所有相关问题,但无法修复它,如果我错过了一个可以回答这个问题的问题,请链接它。 我过去遇到过这个错误,但通常这只是因为我有错别字(例如大写而不是小写(或没有正确导入某些内容,但据我所知,这次情况并非如此。 第一个代码应用.js 第二个代码交互.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);

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
}
}

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

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

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

export const accountSelector = (state) => state.account

您可以在专用的 Redux 资源页面上阅读有关选择器的更多信息

替换这个

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

有了这个

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

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

供您参考,如何访问请浏览官方文档,以便您更好地理解 Redux

最新更新