I use redux store in my react application to store data such as my expenses.
Now I use these expenses in one of the components to calculate a TODO badge count to show like so
const [badgeValue, setBadgeValue] = useState(0);
const expenses = useSelector(({ expenses }: RootState) => expenses.items);
useEffect(() => {
const setBadge = async () => {
const badgeNumber = await calculateRequestBadgeNumber(expenses);
setBadgeValue(badgeNumber);
};
setBadge();
return () => setBadgeValue(0);
}, [expenses]);
This works as expected. Now however, I'm experiencing a weird side effect when I want to filter out deleted expenses like so:
const expenses = useSelector(({ expenses }: RootState) =>
expenses.items.filter((expense: Expense) => !expense.deleted)
);
This results in an endless loop of useEffects being called. Why is this happening?