为了账号安全,请及时绑定邮箱和手机立即绑定

相当于多维 UseState 数组的 Array.Push

相当于多维 UseState 数组的 Array.Push

Cats萌萌 2023-07-20 14:43:20
我有一个数组,数组中的每个元素都可以是汽车 ICar[] 数组,我在向列表添加项目时遇到问题const [carList, setCarList] = React.useState<[ICar[]]>([[]]);当涉及到正常设置状态时,如果它是对象数组,我会执行以下操作setCarList(initialList => [...initialList, JSON.parse(JSON.stringify(car))]); // this works when its just an array of ICar但当我成功时[ICar[]]我遇到了问题const cars =  [JSON.parse(JSON.stringify(car))] as ICar[]; setCarList(initialList => [[...initialList],cars]);
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

不知道为什么使用 JSON.stringify。在你的例子中

setCarList(initialList => [[...initialList],cars]);

实际上应该是

setCarList(initialList => [...initialList,cars]);

在我看来,你嵌套的次数超过了必要的次数。我不知道你对该状态的要求是什么,但如果你需要更多类似引用的状态管理(例如,将汽车添加到最低级别的数组中)。

我还认为您输入错误,因为[ICar[]]实际上是一个只有一个元素的数组 - 这会在向其中添加更多元素时导致 TS 错误。我的猜测是你想要ICar[][]

更重要的是,您可能不希望在“内部”使用空数组来初始化状态,通常初始状态是一个空数组:

const [carList, setCarList] = React.useState<ICar[][]>([]);


查看完整回答
反对 回复 2023-07-20
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信