2016-04-12 24 views
0

Sayfa bileşenimin alt öğeleri olarak blok listelerini oluşturmaya çalışıyorum. Şimdiye kadar sadece görünen blokların konsolunu görüyorum. Konsolda veriler uygun olsa bile, bloklar hiç oluşturulmaz.React, çocukları oluşturmayacak, ancak konsol günlüklerini doğru şekilde yazdı

Yanlış

var Block = React.createClass({ 
    render: function() { 
    var block = this.props.item; 
    return (
     <div className="row" key={block.id}> 
      <p>{block.name}</p> 
     </div> 
    ); 
    } 
}); 

var Page = React.createClass({ 
    getInitialState: function() { 
    return { 
     page: '', 
     blocks: [], 
     newBlockValue: '' 
    }; 
    }, 

    componentDidMount: function() { 
    this.serverRequest = $.get("/pages/"+this.props.page+".json", function (result) { 
     this.setState({ 
      page: result.page, 
      blocks: result.blocks 
     }); 
    }.bind(this)); 
    }, 

    componentWillUnmount: function() { 
    this.serverRequest.abort(); 
    }, 

    render: function() { 
    var page = this.state.page; 
    return (
     <div className="row"> 
      {this.state.blocks.forEach(function(block){ 
       console.log(block); 
       <Block key={block.id} item={block} /> 
      })} 
      <form id="add_new_block"> 
       <input type="text" id="new_block" value={this.state.newBlockValue} onChange={this.handleChange} autoComplete="off"/> 
       <input type="submit" value='Save' onClick={this.createBlock}/> 
      </form> 
     </div> 
    ); 
} 
+0

hatalar:

Ayrıca aksi takdirde undefined bir dizi ile bitireceğiz, sizin Block eleman return gerekir? – erichardson30

+0

Hiç de değil, sadece gibi nesneler: Object {id: 8, name: "foo"} –

+0

Formunuz beliriyor mu? – erichardson30

cevap

4

yapıyor değilim Ne map yerine forEach kullanmalıdır.

Dizide forEach aranıyor undefined döndürür. Page öğenize, undefined öğesinden değil, Block öğesinden oluşan bir dizi olarak alt öğe vermek istiyorsunuz. sizin konsolda

this.state.blocks.map(function(block){ 
    return <Block key={block.id} item={block} /> 
}) 
+0

Doğru, haritama herşeyi değiştirdim, günlükleri tutmaya devam ediyor ama hala hiçbir şey yapmıyor –

+0

@Hipjea Cevabımı ek bir hassasiyetle düzenledim – VonD

+0

Doğru, işte bu! Çok teşekkürler ! –

İlgili konular