2017-06-01 7 views
-2
render() { 
    return (<div> this.list.map(obj => <input value={obj.name} type="checkbox" />)</div>) 
} 

Warum der obige Code nicht funktioniert? habe ein unerwartetes Token erhalten.Karte über Eingang reagieren Checkbox erhalten unerwartetes Token

+0

Sie müssen Code mit geschweiften Klammern umbrechen, wenn Sie ihn in einer React-Komponente verwenden möchten. –

+0

@MichaelLyons was ist jetzt los? https://jsfiddle.net/jwm6k66c/2813/ –

+0

Sie hatten eine Menge Leerzeichen in Ihrer div bracket Notation. Überprüfen Sie diese: [https://jsfiddle.net/jwm6k66c/2814/](https://jsfiddle.net/jwm6k66c/2814/) –

Antwort

1

Sie haben vergessen, den map Teil in {}, schreiben Sie es so zu wickeln:

render() { 
    return (
     <div> 
     {this.list.map(obj => <input key={obj.name} value={obj.name} type="checkbox" />)} 
     </div> 
    ) 
} 

eindeutig vergeben key zu jedem Eingabeelement.

Wenn Liste ist eine state Variable dann müssen Sie schreiben this.state.list, nicht sicher über das so den gleichen Code verwendet.

+0

wird nicht funktionieren https://jsfiddle.net/jwm6k66c/2813/ –

+0

einige Formatierungsprobleme geben keine unnötigen Leerzeichen, es funktioniert: https://jsfiddle.net/mayankshukla5031/kncwe7xu/ –

0

Sie müssen map in die geschweiften Klammern einfügen. Der Code sollte wie folgt sein:

class HelloWidget extends React.Component { 
    constructor(props) { 
     super(props); 
     this.list = [{ 
     "id": "exhibitions", 
     "name": "Exhibitions" 
     }, { 
     "id": "festivals_n_concerts", 
     "name": "Festivals & Concerts" 
     }, { 
     "id": "grand_opening", 
     "name": "Grand Opening" 
     }] 
    } 

    render() { 
     return ( 
     <div> 
      {this.list.map(obj => <input key={obj.name} value={obj.name} type="checkbox" />)} 
     </div> 
    ) 
    } 


    } 

React.render(<HelloWidget /> , document.getElementById('container')); 

Dies wird funktionieren. Here is the fiddle.