2017-09-01 25 views
-1

イテレータ.mapを非同期で実行したいのですが、どのように正しく行われたのかわかりません。私は変数「x」は正しく動作オーバーマップを作成し、それを正しく塗る場合、私はこの非同期マップES6 +反応

async componentDidMount() { 
    await this.props.existingLettersActions.fetchExistingLetters();   
} 

render() { 
var example= ''; 
    var x = [ 
     { 
      id: 1, 
      name: 'asdf' 
     }, 
     { 
      id: 2, 
      name: 'asdf' 
     } 
    ] 
    if (this.props.letters) { 
     example = this.props.letters.map(function(item, i) { 
      return (
       <tr key={i} styleName="container"> 
        <td>{item.id}</td> 
        <td>{item.name}</td> 
       </tr> 
      ); 
     }); 
    } 
} 

return (
    {example} 
) 

を持っていますが、私はthis.props.lettersを置けば、それはthis.props.letters.mapがないというエラーをジャンプ機能。私はこの非同期をどのようにすることができますか?

+0

。あなたは虚偽ではどういう意味ですか? 'letters'リストはそのように埋められていますか、それとも何を意味していますか?データがそこにどのように入ってくるのかわからなくても、アドバイスをするのはかなり難しいです –

+1

[*どうすれば良い質問をしますか?*](/ help/how-to-ask)なぜなら、あなたは 'this.props.letters'を生成する非同期プロセスを表示していないからです。 'this.props.letters' **は**' null'でも 'undefined'でもなく、配列でもないので、エラーメッセージも興味深いです。 –

+0

@MarioFデータAPIから来て、私はtrを非同期的にペイントしたい。マップを非同期で動作させるにはどうすればよいですか? – jmrosdev

答えて

-1

console.logは信頼できるものではありませんが、props.lettersに値があることを示すことができますが、render()メソッドがトリガされた瞬間である可能性があります.props.lettersにはまだ値が設定されていませんデータ付き。

初めてコンポーネントをレンダリングするとき、this.props.lettersは定義されていない(または同様の)ことがあります。このため

が、それはあなたがレンダリングする前に反復処理したい小道具をチェックすることをお勧めし、何かのように:非常にあいまいである

render() { 
    if(!this.props.letters) { 
     return <div>Loading...</div> 
    } 

    return this.props.letters.map((item) => 
     <tr key={item.id} styleName="container__body__table__body"> 
      <td>{item.id}</td> 
      <td>{item.name}</td>       
     </tr> 
    ); 
} 
+0

Uhmmm ...同じエラーが発生しました... this.props.letters.mapは関数ではありません – jmrosdev

+0

これはthis.props.lettersにあるものが配列ではないことを意味します。 – 0xRm

関連する問題