Принцип: функция cartStorage() возвращает объект вида {1:0, 2:0, 3:0...}, {idТовара : кол-во в корзине}
Этот объект я записываю в cartObject, который в Zustand-store. Там же я создаю action getTotalPrice(), в котором пробегаюсь по cartObject, и считаю стоимость товаров(логика подсчёта неважна, она верная). И эту стоимость я через set() записываю в totalPrice, который изначально 0
Action getTotalPrice() я импортирую в компонент Cart.jsx, где вызываю его
import { create } from "zustand";
import { cartStorage } from "../context/Context"; // {1-0, 2-0, 3-0, 4-0..}
export const useStore = create((set, get) => ({
cartObject: cartStorage(), // state(объект)-КОРЗИНЫ
totalPrice: 0,
getTotalPrice: () => {
let totalPrice = 0;
for (let item in get().cartObject) { // если перед cartObject написать get() - падает 1000000 ошибок
if (get().cartObject[item] > 0) {
let element = cartData.find((product) => product.id == +item)
totalPrice += get().cartObject[item] * parseInt(element.price)
}
}
set({totalPrice})
}
}))
// zustand-dependencies
import { useStore } from '../../store/zustandStore'
export const Cart = () => {
// достаём Объект / actions из ZUSTAND-store
const {cartObject, getTotalPrice} = useStore()
useEffect(() => {
getTotalPrice()
}, [cartObject])
}
Но что-то не так в функции getTotalPrice() - сейчас мне выдаёт бесконечные ошибки. Это значит, что запись в state зациклила рендер компонента, и я не пойму как это исправить
Недавно разобрал Zustand, но тут что-то застрял прям, подскажите в чём проблема?