React-在组件状态下向数组内部的对象添加属性

时间:2019-08-05 15:58:32

标签: javascript arrays json reactjs

我正在获取状态中的对象数组,并尝试为每个对象添加属性。
问题是我可以看到我的属性已添加到每个对象中,但是当我通过所有这些对象进行映射并尝试{ "extends": [ "tslint:recommended" ], "rules": { } linterOptions: { "exclude: [ "mysrc/routes/routes.ts" ] } } 时,就会得到console.log

添加属性

undefined
addFavourites() {
        let data = this.state.data.map((e) => {
            e.favourite = false;
            return e;
        });
        return data;
    }

addFavourites的呼叫位置:

state = {
        data: []
    }

在渲染功能中,我看到了我所有的对象,包括收藏夹

getItem = () => {
        this.service
            .mergeData()
            .then((body) => {
                this.setState({
                    data: body
                },
                () => {
                    this.addFavourites();
                },
                () => {
                    this.dataToFilter();
                });
            });
    }

    componentDidMount(){
        this.getItem();
    }

但这会给出未定义的数组

console.log(data.map((e) => e));

我该如何解决?

1 个答案:

答案 0 :(得分:3)

首先,欢迎光临!您可能应该更清楚地知道这个问题是关于React的。

现在答案是,每个状态修改都将使用setState进行,因此您的addFavourites函数应如下所示:

addFavourites() {
    let data = this.state.data.map((e) => {
        e.favourite = false;
        return e;
    });
    this.setState({ data: data });
}