2016-04-05 16 views
2

Ich bin mir sicher es ist etwas offensichtlich und dann werde ich mich albern fühlen, aber was fehlt mir hier? Ich habe so etwas wie:React State Array Werte hinzufügen

export default class Questions extends Component { 

    state = { 
    questions: [{value: 'one'}, {value: 'two'}] 
    }; 

    addQuestion = (question) => { 
    let questions= this.state.questions 
    let newQuestions = [...questions, {value: question}] 
    this.setState({ 
     questions: newQuestions 
    }) 
    }; 

    render() { 
    return (
     <div> 
     {this.state.questions.map((question, index) => <p key={index}>{question.value}</p>)} 
     <button onClick={this.addQuestion.bind('three')}>Add</button> 
     </div> 
    ) 
    } 

} 

Die Anfangszustandswerte in Ordnung erscheinen, aber wenn ich hinzufügen klicken erhalte ich einen sehr langen Fehler von Reagieren zu:

Uncaught Error: Invariant Violation: Objects are not valid as a React child...

Also, was ich hier fehlt?

Antwort

2

Wahrscheinlich sollte es sein:

{this.addQuestion.bind(this, 'three')} 

Andernfalls würden Sie nicht in der Lage sein, den Zugriff auf this.state in addQuestion:

let questions= this.state.questions 
+0

Ja - es war das. Ich gewöhne mich immer noch an die lexikalische "this" -Bindung, die von ES6-Pfeilfunktionen bereitgestellt wird und wo "this" benötigt wird oder nicht. Danke mein Herr! –

+0

Froh, Ihnen zu helfen :) –

Verwandte Themen