2015-04-24 32 views
21

Ho creato un componente React semplice che visualizza un altro componente di reazione. Ma non rende in del browser:Componente Simple React non rendering

class Home extends React.Component { 
    render() { 
    return (
     <div> 
     <map/> 
     </div> 
    ); 
    } 
} 

var map = React.createClass({ 
    render: function() { 
     return (
      <div id="map-canvas"> 
      <span>hello</span> 
      </div> 
    ); 
    } 
}); 

mi aspetto il hello di mostrare sullo schermo, ma nulla si presenta e quando ho ispezionare l'elemento di tutto quello che posso vedere è

<map data-reactid=".0.0"></map> 

Qualcuno può indicare ciò che potrebbe essere sbagliato.

risposta

62

JSX prevede che i tag del componente siano in maiuscolo. Altrimenti, creerà solo un elemento DOM con il tag fornito. Vedi HTML Tags vs. React Components.

<map /> compila a React.createElement("map", {}); mentre <Map /> compila a React.createElement(Map, {});.

Basta rinominare map a Map e sei a posto.

+2

bene che dà un altro errore 'TypeError Uncaught: Impossibile leggere la proprietà 'toUpperCase' di ReactDefaultInjection.js indefiniti : 53' – iJade

+0

Assicurati che 'Map' sia correttamente definito nel contesto del tuo metodo' App :: render'. Inoltre, tieni presente che in ES6, 'Map' è un oggetto predefinito standard, quindi potresti voler rinominare il tuo componente in qualcos'altro. –

+0

Ok .. L'ho rinominato in 'MyMap', ma ho ancora lo stesso errore. – iJade

1

Basta fare in modo che variabile che si dichiara per la creazione di componenti inizia con una maiuscola: -Basta Ti piace questa

var Map = React.createClass({ 
//Your Code here 

}); 
Problemi correlati