You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为React状态initialTags添加新属性?解决setState异步问题

React状态initialTags添加新属性的问题及解决方案

我正尝试为React状态initialTags添加新属性,但不知如何操作。曾尝试遍历对象设置新属性但未成功,另外由于setState是异步的,同一个函数里第一次执行setState后,没法再次对同一状态执行setState。

初始化状态代码

this.setState({ initialTags: [...tempTarget] }, () => console.log("initTags == ", this.state.initialTags));

setState后的对象数组

[
    {
        "name": "AQS",
        "projectId": "MTYzMDE1MzU3NjA3My10ZXN0MTA",
        "projectName": null,
        "isUserForAllProject": false
    },
    {
        "name": "ED",
        "projectId": null,
        "projectName": null,
        "isUserForAllProject": null
    },
    {
        "name": "PAID",
        "projectId": null,
        "projectName": null,
        "isUserForAllProject": null
    },
    {
        "name": "QS",
        "projectId": null,
        "projectName": null,
        "isUserForAllProject": null
    }
]

期望的目标数组(添加return属性后)

[
    {
        "name": "AQS",
        "projectId": "MTYzMDE1MzU3NjA3My10ZXN0MTA",
        "projectName": null,
        "isUserForAllProject": false,
        "return": []

    },
    {
        "name": "ED",
        "projectId": null,
        "projectName": null,
        "isUserForAllProject": null,
        "return": []
    },
    {
        "name": "PAID",
        "projectId": null,
        "projectName": null,
        "isUserForAllProject": null,
        "return": []
    },
    {
        "name": "QS",
        "projectId": null,
        "projectName": null,
        "isUserForAllProject": null,
        "return": []
    }
]

解决方案

无需多次调用setState,可在初始化状态时直接为数组中的每个对象添加新属性:

this.setState({ initialTags: [...tempTarget.map(item => ({...item, return: []}))] })

注:原解决方案中使用returnVal作为属性名,可根据实际需求替换为期望的return或其他名称。

内容的提问来源于stack exchange,提问作者Jing c

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 06:21:57