我正在尝试将一个对象添加到我存储在我的状态对象中的嵌套数组,但似乎有问题
I am trying to add an object to a nested array I have stored in my state object, but seem to have an issue with it
我有一个在状态下创建的对象,它是我的预订模型。我的 addPassenger 函数应该在单击时将一个空对象创建到具有属性的数组中。当我 console.log 新数组时,它 returns 我正确地使用了数组,但是当我执行函数时没有任何反应,没有错误。只是空白控制台。
我的整个组件https://pastebin.com/RLprKJrr
booking: {
id: "",
number: "",
date: "",
bookingStatus: "OPCIJA",
paymentMethod: "MODELA1",
tripID: 1,
passengers: [
{
id: "",
holder: {
email: "",
address: "",
mobile: ""
},
name: "",
surname: "",
passport: "",
idCard: ""
}
]
}
addPassenger = e => {
e.preventDefault();
let passengersArray = [...this.state.booking.passengers];
console.log(passengersArray);
this.setState({
passengers: [...passengersArray, {
id: "",
name: "",
surname: "",
passport: "",
idCard: ""
}]
})
this.checkArrayLength();
}
因为问题是数据传递给 setState
这是你初始状态的结构
{
booking: {
passengers: {
...
}
}
}
然后可以通过 this.state.booking.passengers
访问
但是当您再次设置状态时,您会将乘客置于与这样的预订相同的级别
{
booking: {
...
},
passengers: {
...
}
}
所以你基本上需要这样做
this.setState({
bookings: {
...this.state.bookings,
passengers: [...passengersArray, {
id: "",
name: "",
surname: "",
passport: "",
idCard: ""
}]
}
})
请尝试设置 booking.passengers 的状态,而不仅仅是乘客:
this.setState({
booking.passengers: ...
您必须在新状态中包含密钥 'booking':
this.setState(previousState => ({
booking: {
...previousState.booking,
passengers: [...passengersArray, {
id: "",
name: "",
surname: "",
passport: "",
idCard: ""
}]
}
}));
希望对你有帮助!
我有一个在状态下创建的对象,它是我的预订模型。我的 addPassenger 函数应该在单击时将一个空对象创建到具有属性的数组中。当我 console.log 新数组时,它 returns 我正确地使用了数组,但是当我执行函数时没有任何反应,没有错误。只是空白控制台。
我的整个组件https://pastebin.com/RLprKJrr
booking: {
id: "",
number: "",
date: "",
bookingStatus: "OPCIJA",
paymentMethod: "MODELA1",
tripID: 1,
passengers: [
{
id: "",
holder: {
email: "",
address: "",
mobile: ""
},
name: "",
surname: "",
passport: "",
idCard: ""
}
]
}
addPassenger = e => {
e.preventDefault();
let passengersArray = [...this.state.booking.passengers];
console.log(passengersArray);
this.setState({
passengers: [...passengersArray, {
id: "",
name: "",
surname: "",
passport: "",
idCard: ""
}]
})
this.checkArrayLength();
}
因为问题是数据传递给 setState
这是你初始状态的结构
{
booking: {
passengers: {
...
}
}
}
然后可以通过 this.state.booking.passengers
但是当您再次设置状态时,您会将乘客置于与这样的预订相同的级别
{
booking: {
...
},
passengers: {
...
}
}
所以你基本上需要这样做
this.setState({
bookings: {
...this.state.bookings,
passengers: [...passengersArray, {
id: "",
name: "",
surname: "",
passport: "",
idCard: ""
}]
}
})
请尝试设置 booking.passengers 的状态,而不仅仅是乘客:
this.setState({
booking.passengers: ...
您必须在新状态中包含密钥 'booking':
this.setState(previousState => ({
booking: {
...previousState.booking,
passengers: [...passengersArray, {
id: "",
name: "",
surname: "",
passport: "",
idCard: ""
}]
}
}));
希望对你有帮助!