如何为React状态initialTags添加新属性?解决setState异步问题
我正尝试为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
相关产品推荐
相关产品推荐

