Недавно я обновил корзину покупок Appt для CRA 3, которая включает в себя функцию eslint-plugin-Reaction-hooks useEffect.Соответственно, он вызывает зависимости для второго массива параметров в useEffect.
Я намеревался запускаться только при монтировании, поэтому я использовал [] ранее, и он работал как положено, но теперь он добавляет, добавляет эти зависимости и делаетне работает под нагрузкой.Я понимаю, что могу отключить это правило eslint на глобальном или индивидуальном уровне, но я бы предпочел знать, как это сделать в реакции.
const CartItem = ({ inventoryItems, dispatch, item }) => {
const invItem = inventoryItems.find(invItem => invItem.id === item.id);
useEffect(() => {
const setWarnings = (item) => {
let warnings = [];
if (item.quantity > invItem.quantity) {
warnings.push(`Note quantity of requested ${
item.name
}s was reduced by ${item.quantity -
invItem.quantity} due to sold inventory since it was placed in cart.`);
item.quantity = invItem.quantity;
}
if (item.price !== invItem.price) {
warnings.push(`Note price for ${
item.name
} has changed since it was placed in cart (${
invItem.price > item.price ? "+ " : ""
} ${formatPrice(invItem.price - item.price)}).`);
item.price = invItem.price;
}
}
setWarnings(item)
},[invItem.price, invItem.quantity, item])
return (/* here I will display my item and below it map warnings array */)
}