2017-08-20 17 views
0

私は小道具からアイテムをレンダリングしたいのですが、初期状態ではできますが、サーバからの応答ではできません。私はこの間違いを得るmap関数in react(エラー:TypeError:e.mapは関数ではありません)

const { data } = this.props; 
    return (
     <div > 
      {data.map((item, index) => 
       <div key={index} className="row"> 
        <span data = { data } className="number col-4 col-md-8">{item._id}</span> 
        <span data = { data } className="date col-4 col-md-2">{item.date}</span> 
        <span data = { data } className="tag col-4 col-md-2">{item.tag}</span> 
        <div className="col-md-12 "> 
        {item.text} 
        </div>     
       </div> 
     )} 
     </div> 
    ) 
    } 

TypeError: e.map is not a function

応答:オブジェクト{データ:アレイ(12)、状態:200、STATUSTEXT: "OK"、ヘッダ:オブジェクト、設定:My機能をレンダリングオブジェクト...}

+0

あなたのサーバーへの呼び出しはどこですか?あなたのコードに 'e.map'はどこですか? –

+0

レスポンスからデータの小道具をどのように更新していますか?データが定義されていないように見えるので、何かを上書きしていると思いますが、コードが表示されるまでわかりません。 –

答えて

0

応答が保留中の場合、デフォルト値dataを使用できます。この時点ではdataがJSXで

const { data = [] } = this.props; 

または使用条件を定義されていません。

render() { 
    if (!data || !data.length) return null; 
    ... 
} 
0

あなたの応答は単なる生の応答であるように見えます。

fetch(fromMySource).then(resp => resp.json()).then(data => doSomething(data)); 

あなたのデータ配列は、あなたに掲載レスポンスオブジェクトのように見えるように思われる直接RESPを使用しようとするかもしれないように見えます:あなたがフェッチ使用している場合、これは約束チェーンがどのように見えるかです質問。

0

ちょうどあなたが、配列が存在していたかどうかを確認必要があるため、その後ステートメマップ機能

const { data } = this.props; 
    return (
     <div > 
      {data && data.lenght && data.map((item, index) => 
       <div key={index} className="row"> 
        <span data = { data } className="number col-4 col-md-8">{item._id}</span> 
        <span data = { data } className="date col-4 col-md-2">{item.date}</span> 
        <span data = { data } className="tag col-4 col-md-2">{item.tag}</span> 
        <div className="col-md-12 "> 
        {item.text} 
        </div>     
       </div> 
     )} 
     </div> 
    ) 
    } 
+0

は応答がまだ存在しないうちにレンダリングされているように見え、その後は再レンダリングされません。 –

0

は、親コンポーネントの変更にこの変更しなければならなかった 、機能をマップあなたにこれらの単語を追加します。

this.setState({ 
    data: response 
    }) 

this.setState({ 
    data: response.data 
    }) 

私はチャイルドコンプonentですが、うまく動作しません(おそらくマップ機能のため)

関連する問題