2017-07-20 12 views
1

this.state.chebi_resultsをJSONオブジェクトonSubmit()で更新する検索ボックスがあります。出力をHTMLにレンダリングしようとする場合を除いて、すべて動作するようです。私は、順序付けられていないリストとして出力をレンダリングしようとしています。私のコンソールログは、私が望むものを正確に表示します。 HTMLが更新されないのはなぜですか?ReactJS出力はHTMLにレンダリングされませんが、コンソールログで動作します

chebiResults=()=>{ 
    return(
     <div className='search_results'> 
     <ul> 
     {this.state.chebi_results.forEach((element)=>{ 
      <li>{element.name}</li> 
      console.log(element.name) 
     })} 
     </ul> 
     </div> 
    ); 
    } 

    render(){ 
    return (
     <div className='ontology_tool'> 
     <div className='wraper'> 
     <div className='search'> 
      <div className='search_tool'> 
      <form onSubmit={this.handleSearch}> 
       <input type="text" name="query" value={this.state.form_query} onChange={this.setQuery}/> 
       <input type="Submit" value="Submit" /> 
      </form> 
      </div> 
      {this.chebiResults()} 
     </div> 
     <div className='selected'> 
     </div> 
     </div> 
     </div> 
    ); 
    } 

答えて

1

Array#forEachは何も返しません。あなたの機能をArray#mapに置き換えてください。

this.state.chebi_results.map((element) => { ... }); 
1

あなたはmapないforEachを使用する必要があります。

chebiResults=()=>{ 
    return(
     <div className='search_results'> 
     <ul> 
     {this.state.chebi_results.map((element)=>{ 
      console.log(element.name); 
      return <li>{element.name}</li>; 
     })} 
     </ul> 
     </div> 
    ); 
    } 
+0

ありがとうございます。私の問題は、私がHTMLタグの前に戻ることがなかったようです。私はあなたが帰ってきて帰る必要があるのか​​分からなかった。今はMap&ForEachの両方で動作します。両方の仕事があることを考えれば、マップはなぜforEachに優先されますか? – Raven

関連する問題