我无法访问对象内部的数组对象。
[更新:] 我正在从以下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
}
}
问题:我在这里做错了什么?让我知道是否也需要共享其他内容
答案 0 :(得分:0)
我假设您正在使用Redux。据我所知,您似乎正在尝试使用render()中可能不可用的资源。 您应该使用一个名为 redux-subscriber 的软件包来“监视” redux存储库中的更改。请参阅下面的示例:
componentDidMount() {
subscribe('exchange.updated', state => {
this.setState({ exchange: state.exchange.data })
})
}
在您的render()方法中,您应该使用this.state.exchange。 因为当状态改变时,React会自动重新渲染组件。