简体   繁体   English

反应添加属性到不可变的对象

[英]React add property to immutable object

I'm trying to add a new property to objects within an array. 我正在尝试向数组中的对象添加新属性。 My idea was to do something like this: 我的想法是做这样的事情:

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

I want members to stay/remain immutable, yet adding another property to every object within this array. 我希望members保持/保持不变,但要向此数组内的每个对象添加另一个属性。 What am I doing wrong here? 我在这里做错了什么? Thanks! 谢谢!

You are not storing returned value of map to members variable 您没有存储映射到成员变量的返回值

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};
    };

数组原型.map()不会更改原始数组,但会返回一个新数组。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM