2017-08-17 32 views
0

我试图添加一个新的属性到数组中的对象。我的想法是做这样的事情:React将属性添加到不可变的对象

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/>) 
    } 
} 

我想members留/保持不变,但这个阵列中添加另一个属性对每个对象。我在这里做错了什么?谢谢!

回答

3

你不存储返回地图的价值,成员变量

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

哇,现在我觉得哑巴。谢谢。已解决 – Nocebo

+1

我会;)必须等5分钟 – Nocebo

+1

@Nocebo在回答中添加了一个编辑,以显示由于Array#map已经返回一个新数组,因此不必使用this.props.members。切片()'。 – philraj

1

数组原型.map()不发生变异原数组,而是返回一个新的数组。

+0

感谢您的信息。将查找它:) – Nocebo