我对React有一个小问题(仍然是新手)。我有一系列的结果。这些结果有嵌套的Bookings,也在数组中,后者就是我正在操作的。
当用户创建预订时,一切都按预期进行 - findIndex
获取正确的Result元素并相应地修改其预订数组。
但是,当我想要“取消预订”时,它只会找到数组中的最后一个结果,而findIndex
始终是-1
(所以我甚至没有进入预订部分,因为我得到的结果索引是错误的。)
代码类似,我的项目都有唯一的密钥,我不明白可能是什么问题(使用Alt作为Flux实现)?
创建时会发生以下情况:
onCreateBookingSuccess(data) {
let resultIndex = this.results.findIndex((result) => result.id === data.id);
this.results.update(resultIndex, (result) => result.bookings.push(data));
toastr.info('Booked! User will receive notification.');
}
关于删除:
onDestroyBookingSuccess(data) {
let resultIndex = this.results.findIndex((result) => result.id === data.id);
var myBooking;
this.results.map((result) => {
myBooking = result.bookings.findIndex((booking) => booking.id === data.booking);
});
this.results.update(resultIndex, (result) => result.bookings.splice(myBooking,1));
toastr.warning('Unbooked! User will receive notification.');
}
我的对象:
<Result key={result.id} id={result.id} bookings={result.bookings} />
正如我所提到的,第一个操作按计划进行,一切都按照应有的方式进行修改。第二个操作系统的问题从一开始就开始,resultIndex
返回-1
。
答案 0 :(得分:0)
问题似乎在这里:
var myBooking;
this.results.map((result) => {
myBooking = result.bookings.findIndex((booking) => booking.id === data.booking);
});
你总是分配给 另外,考虑重命名myBooking
,即使在找到索引后找不到索引(-1
),也等同于{{1} }。你真的只想获得不是this.results.last().bookings.findIndex(...)
的-1
var myBooking = this.results.map((result) => {
myBooking = result.bookings.findIndex((booking) => booking.id === data.booking);
}).find((index) => index != -1);
以更好地表明它是索引而不是实际记录。