【发布时间】:2017-07-05 09:19:57
【问题描述】:
我正在使用react-redux-mapbox-gl 库。我有一组要映射的点,以便在 Mapbox 组件中创建多个覆盖组件。然而,在尝试映射数组时,我总是得到一个未定义的错误。我是 React/Redux 的新手,所以不确定问题是什么。
下面是我的组件:
import React from 'react';
import Mapbox from 'react-redux-mapbox-gl';
import SpotsOverlay from './SpotsOverlay'
const mapStateToProps = state => ({
spots: state.homemap.spots
})
class HomeMap extends React.Component {
render(){
return (
<Mapbox
mapboxgl={mapboxgl}
accessToken={mapAccessToken}
getMap={this.getMap}
style={this.mapStyle}
options={this.mapOptions}
>
{
this.props.spots.map(spot =>{
return (
<SpotsOverlay
overlay={this.overlay}
key={spot.id}/>
);
})
}
</Mapbox>
);
}
}
【问题讨论】:
-
应该是
this.props.spots...而不是props.spots. -
@MayankShukla 我以前试过这个仍然不起作用。还有其他建议吗?
-
您是否使用任何 api 来获取该数据??
-
在使用
map之前检查值,像这样:Array.isArray(this.props.sports) && this.props.sports.map或在reducer中设置初始状态为[],它应该可以工作。 -
无条件失败的原因是,最初 reducer 状态是
{},所以state.homemap.spots将是 undefined 并且当您使用undefined的映射时,它抛出了错误,很高兴它解决了你的问题:)
标签: reactjs react-redux mapbox-gl-js