2016-06-24 21 views
5

Passando componenti figlio come argomenti a funzioni di componente principale e cercando di rendere non funzionaE 'possibile passare un Reagire componente come argomento tra funzioni di un componente Container

//React Container Component 
//Import Both Views and Render based on preference 
import PosterView from "./PosterView" 
import ListView from "./ListViewCard" 

... 

renderCardsBasedOnType(cardType){ 
    if(cardType === "poster"){ 
    return this.renderCards(PosterView) 
    }else{ 
    return this.renderCards(ListViewCard) 
    } 
} 
renderCards(component){ 
    let cards = this.props.list.map(function(cardData){ 
    return <component data={cardData}/> 
    }) 
    return cards 
} 
render(){ 
    let cards = this.renderCardsBasedOnType("poster") 
    return <div>{cards}</div> 
} 
...... 

risposta

9

Prova Component invece di component. React richiede un upperCase per tag jsx:

renderCards(Component){ 
    let cards = this.props.list.map(function(cardData){ 
    return <Component data={cardData}/> 
    }) 
    return cards 
} 
+1

Wow. Grazie per questo! Ho solo perso due ore cercando di capire perché il mio componente non ha reso. Questo fa il lavoro. Peccato che il seguente stile JS consigliato abbia effetti collaterali delicati qui ... – Form