无法访问对象内部的数组对象

时间:2018-10-05 03:09:01

标签: javascript reactjs redux

我无法访问对象内部的数组对象。

[更新:] 我正在从以下API提取数据并将其存储在exchangURL中

"https://api.cryptonator.com/api/full/btc-usd"

在这里,我正在调度一个操作,该操作存储了此api中的response.data

    export const exchangeToDisplay = (exchangURL) => {
    return function (dispatch) {
        dispatch({type: EXCHANGE_CURRENCY_FETCHING })
        axios.get(exchangURL).then((response) => {
            console.log(response)
        return(
            dispatch({
                type: EXCHANGE_CURRENCY_FETCH_SUCCESS,
                payload: response.data
            })
        )
        }).catch((error) => {
            console.log(error)
            return (
            dispatch({
                type: EXCHANGE_CURRENCY_FETCH_ERROR,
                payload: error
            })
            )
        })
    }
}

现在,当我执行此类操作时,我是有状态的反应组件(渲染)

   if (!this.props.exchangeLoading && !this.props.exchangeError) {
             console.log(this.props.exchange.ticker)
        }

它会在回应后扔给我

{base: "BTC", target: "USD", price: "6566.31298848", volume: "28234.81119471", change: "-3.03860702", …}
   base: "BTC"
   change: "-3.03860702"
   markets: (13) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
   price: "6566.31298848"
   target: "USD"
   volume: "28234.81119471"
   __proto__: Object

现在我要访问给定对象内的市场数组,所以我做了类似的事情

 if (!this.props.exchangeLoading && !this.props.exchangeError) {
    console.log(this.props.exchange.ticker["markets"])
    }

抛出类型错误,提示类型错误:无法读取未定义的属性“市场”

[注意:]以上交换道具来自redux商店

const mapStateToProps = state => {
    return {
        exchange: state.exchange.DataSucess,
        exchangeLoading: state.exchange.DataFetching,
        exchangeError: state.exchange.DateError
    }
}

问题:我在这里做错了什么?让我知道是否也需要共享其他内容

1 个答案:

答案 0 :(得分:0)

我假设您正在使用Redux。据我所知,您似乎正在尝试使用render()中可能不可用的资源。 您应该使用一个名为 redux-subscriber 的软件包来“监视” redux存储库中的更改。请参阅下面的示例:

 componentDidMount() {
    subscribe('exchange.updated', state => {
      this.setState({ exchange: state.exchange.data })
    })
  }

在您的render()方法中,您应该使用this.state.exchange。 因为当状态改变时,React会自动重新渲染组件。

相关问题