2017-07-05 3 views
0

私はreact-redux-mapbox-glライブラリを使用しています。 Mapboxコンポーネント内に複数のオーバーレイコンポーネントを作成するためにマップしたいスポットがあります。しかし、配列をマップしようとすると、私は常に定義されていないエラーが発生します。私はReact/Reduxを初めて熟知しているので、その問題が何であるか分かりません。マップ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> 
); 
} 
} 
+0

これは 'this.props.spots ...'ではなく 'props.spots 'ではありません。 –

+0

@MayankShuklaこれまでにもこれを試しましたがまだ動作しません。その他の提案はありますか? –

+0

あなたはそのデータを取得するために任意のAPIを打つか? –

答えて

0

役立つかもしれない復帰方法の外にマッピングを行います。

class HomeMap extends React.Component { 

    render(){ 

     let spots = []; 

     if(this.props.spots) { 
      spots = this.props.spots.map(spot =>{ 
       return (
        <SpotsOverlay 
         overlay={this.overlay} 
         key={spot.id}/> 
       ); 
      }); 
     } 

     return (

      <Mapbox 
       mapboxgl={mapboxgl} 
       accessToken={mapAccessToken} 
       getMap={this.getMap} 
       style={this.mapStyle} 
       options={this.mapOptions} 
      > 
       {spots} 
      </Mapbox> 
     ); 
    } 
} 

@MayankShuklaが彼のコメントで言ったように、これはうまく動作する理由はstate.homemap.spotsが不定となりますので、あなたが使用していたとき

は当初、状態は{}である減速機ということです定義されていない地図

+0

小さな提案、常にあなたが変更したものと、それが誰にも役立つ理由: –

+0

@MayankShukla私はそれがなぜ役立つかわからない、私は似た問題に遭遇したことを覚えている反応で始め、これで解決しました。しかし、1つは、少なくともそれはもっときれいに見えるということです。 :) – Winter

+1

ここで説明し、エラーを解決する理由を確認します。マップ変数を使用するのは配列でなければなりません。それ以外の場合はエラーがスローされます。[リンク](https://stackoverflow.com/questions/44922017/react-map-redux-コンポーネント内の状態から作成までの複数のコンポーネント#comment76821491_44922017) –

関連する問題