Ensure stable identity for pricing tiers in forms
Adds a tempId to new pricing tiers for stable mapping before backend _id assignment. Updates mapping logic in pricing-tiers form to use tempId or _id for reliable event handling and rendering.
This commit is contained in:
@@ -76,14 +76,12 @@ export const PricingTiers = ({
|
||||
.sort((a, b) => (a?.minQuantity || 0) - (b?.minQuantity || 0))
|
||||
.map((tier, sortedIndex) => {
|
||||
if (!tier) return null;
|
||||
|
||||
// Find the original index for proper event handling
|
||||
const originalIndex = pricing.findIndex(p =>
|
||||
p === tier || (p?.minQuantity === tier?.minQuantity && p?.pricePerUnit === tier?.pricePerUnit)
|
||||
);
|
||||
// Prefer stable identifiers for mapping back to the original array
|
||||
const keyId = tier._id || tier.tempId;
|
||||
const originalIndex = pricing.findIndex((p) => (p?._id || p?.tempId) === keyId);
|
||||
return (
|
||||
<div
|
||||
key={tier._id || originalIndex}
|
||||
key={keyId || originalIndex}
|
||||
className="grid grid-cols-[1fr_1fr_1fr_auto] gap-2 mt-2"
|
||||
>
|
||||
<Input
|
||||
|
||||
Reference in New Issue
Block a user