Skip to content

Commit e37f286

Browse files
author
Alejandro Gastelum Flores
committed
Improved dynamic order state stories render logic to avoid unnecessary renders
1 parent 2d1bb7f commit e37f286

File tree

2 files changed

+28
-10
lines changed

2 files changed

+28
-10
lines changed

packages/react-paypal-js/src/stories/payPalCardFields/payPalCardFieldsIndividual.stories.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -330,16 +330,28 @@ export const WithDynamicOrderState: FC = () => {
330330
column: number,
331331
count: number,
332332
) => {
333-
const index = row * 4 + column;
334-
const newFieldsTableCounts = [...fieldsTableCounts];
335-
newFieldsTableCounts[index] = count;
336-
setFieldsTableCounts(newFieldsTableCounts);
333+
setFieldsTableCounts((prevFieldsTableCounts) => {
334+
const index = row * 4 + column;
335+
if (prevFieldsTableCounts[index] === count) {
336+
return prevFieldsTableCounts;
337+
}
338+
339+
const newFieldsTableCounts = [...prevFieldsTableCounts];
340+
newFieldsTableCounts[index] = count;
341+
return newFieldsTableCounts;
342+
});
337343
};
338344

339345
const updateProviderTableCount = (index: number, count: number) => {
340-
const newProviderTableCounts = [...providerTableCounts];
341-
newProviderTableCounts[index] = count;
342-
setProviderTableCounts(newProviderTableCounts);
346+
setProviderTableCounts((prevProviderTableCounts) => {
347+
if (prevProviderTableCounts[index] === count) {
348+
return prevProviderTableCounts;
349+
}
350+
351+
const newProviderTableCounts = [...prevProviderTableCounts];
352+
newProviderTableCounts[index] = count;
353+
return newProviderTableCounts;
354+
});
343355
};
344356

345357
async function createOrder() {

packages/react-paypal-js/src/stories/payPalCardFields/payPalCardFieldsProvider.stories.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,15 @@ export const WithDynamicOrderState: FC = () => {
340340
const [isPaying, setIsPaying] = useState(false);
341341

342342
const updateProviderTableCount = (index: number, count: number) => {
343-
const newProviderTableCounts = [...providerTableCounts];
344-
newProviderTableCounts[index] = count;
345-
setProviderTableCounts(newProviderTableCounts);
343+
setProviderTableCounts((prevProviderTableCounts) => {
344+
if (prevProviderTableCounts[index] === count) {
345+
return prevProviderTableCounts;
346+
}
347+
348+
const newProviderTableCounts = [...prevProviderTableCounts];
349+
newProviderTableCounts[index] = count;
350+
return newProviderTableCounts;
351+
});
346352
};
347353

348354
async function createOrder() {

0 commit comments

Comments
 (0)