@Danila232

Zustand — ошибка с записью в State?

Принцип: функция 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, но тут что-то застрял прям, подскажите в чём проблема?
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы