2017-05-17 2 views
-1

Hier erstelle ich TodoItems Komponente, und ich versuche Array als einen Zustand zu speichern, aber Konsole sagt, dass meine Einträge nicht definiert ist:Konsole sagt mein Zustand "Einträge" ist nicht definiert? Kannst du mir helfen, wie man den Zustand in React.js definiert?

var TodoItems = React.createClass({ 
     getInitialState: function() { 
      return { 
      entries: this.props.entries 
      }; 
     }, 

     removeItem: function(key){ 
     var itemArray = this.state.entries; 
     for (var i = 0; i < itemArray.length; i++) 
      if (itemArray[i.key] === key) { 
       itemArray.splice(i, 1); 
       break; 
      } 
      this.setState({ 
      entries: entries 
      }) 
     }, 

Dies ist die Stütze I zu speichern bin versucht:

</div> 
    <TodoItems entries={this.state.items}/> 
</div> 
+0

Was ist 'entries' in' removeItem'? Es ist nicht definiert – Li357

+0

korrigierten zusätzlichen Code Einrückung und Großschreibung – lukkea

Antwort

0

Sie machen einen Fehler und setzen den Status entries in der Funktion removeItem, wobei Sie sie auf itemArray setzen sollten, auch itemArray als var itemArray = [...this.state.entries]; zuweisen, da sie sich in Ihrer Deklaration auf die Statuseinträge selbst bezieht und den Status direkt mutiert , was nicht ratsam ist, und getInitialState ist nur auf dem first render of TodoItems so genannt, wenn Sie einen Zustand mit Requisiten stellen Sie sicher, Zuweisen auch, dass in der componentWillReceiveProps Funktion zu tun, da es jedes Mal die Eltern aufgerufen wird, macht und die aktualisierten Requisiten

var TodoItems = React.createClass({ 
     getInitialState: function() { 
      return { 
      entries: this.props.entries 
      }; 
     }, 
     componentWillReceiveProps(nextProps) { 
      this.setState({entries: nextProps.entries}) 
     } 
     removeItem: function(key){ 
     var itemArray = [...this.state.entries]; 
     for (var i = 0; i < itemArray.length; i++) 
      if (itemArray[i.key] === key) { 
       itemArray.splice(i, 1); 
       break; 
      } 
      this.setState({ 
      entries: itemArray 
      }) 
     }, 
+0

Okay, jetzt habe ich einen anderen Fehler, aber der alte scheint weg zu sein, danke! Neuer Fehler führt zum Absturz des gesamten lokalen Hosts und besagt, dass "setstate während eines bestehenden Zustandsübergangs nicht aktualisiert werden kann". Können Sie mit diesem – Riku

+0

helfen Ja, aber es hängt davon ab, wie Sie den Rest des Codes verwenden, der in Ihrer Frage nicht erwähnt wird. Also ich denke, Sie können dies schließen und eine neue Frage stellen –

+0

Ist Ihr Problem gelöst –

Verwandte Themen