2017-08-17 1 views
0

Ich versuche, Objekte in einem Array eine neue Eigenschaft hinzuzufügen. Meine Idee war, so etwas zu tun:React hinzufügen Eigenschaft zu unveränderlichen Objekt

class Foo extends Component { 
    constructor(props) { 
     super(props); 

     this.state = this.getInitialState(); 
     console.log(this.state); //Property "label" is missing in "members" array 
    } 

    /** 
    * Get initial state 
    * @returns {{title, description}} 
    */ 
    getInitialState =() => { 
     let members = this.props.members.slice(); 
     members.map((member) => { 
      return { 
       ...member, 
       label: (member.firstName + " " + member.lastName) 
      } 
     }); 
     console.log(members); //"label" is not a property of objects 

     return {title: "", description: "", responsible: [], typeOf: null, 
       members: members}; 
    }; 

    render() { 
     return (<div/>) 
    } 
} 

Ich möchte members bleiben/bleiben unveränderlich, aber das Hinzufügen eines weiteren Eigenschaft für jedes Objekt innerhalb dieses Arrays. Was mache ich hier falsch? Vielen Dank!

Antwort

3

Sie speichern nicht Wert der Karte an die Mitglieder Variable

zurück
getInitialState =() => { 
     let members = this.props.members.map((member) => { 
      return { 
       ...member, 
       label: (member.firstName + " " + member.lastName) 
      } 
     }); 
     console.log(members); //"label" is not a property of objects 

     return {title: "", description: "", responsible: [], typeOf: null, 
       members: members}; 
    }; 
+0

Wow, jetzt fühle ich mich dumm. Vielen Dank. Gelöst – Nocebo

+1

Ich werde;) Warten auf 5 min – Nocebo

+1

@Nocebo hinzugefügt eine Bearbeitung der Antwort zu zeigen, dass seit 'Array # map' bereits ein neues Array zurückgibt, müssen Sie nicht this.props.members verwenden. slice() '. – philraj

1

Das Array Prototyp .map() nicht das ursprüngliche Array mutieren, sondern gibt ein neues Array.

+0

Danke für die Information. Will es nachschauen :) – Nocebo

Verwandte Themen