Можно ли объединить 2 микростора в 1 стор в Zustand

«Можно ли объединить 2 микростора в 1 стор в Zustand» — вопрос из категории Библиотеки, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. В Zustand можно создать общий стор, который будет включать в себя состояния и методы из нескольких микросторов. Это делается с помощью функции combine или вручную объединяя состояния.

Пример с combine:

import { create } from 'zustand';
import { combine } from 'zustand/middleware';

const useStore1 = create(combine({ count: 0 }, (set) => ({
  increment: () => set((state) => ({ count: state.count + 1 })),
})));

const useStore2 = create(combine({ name: '' }, (set) => ({
  setName: (name: string) => set({ name }),
})));

const useCombinedStore = create(combine(
  { ...useStore1.getState(), ...useStore2.getState() },
  (set) => ({
    ...useStore1(set),
    ...useStore2(set),
  })
));

Или вручную:

const useCombinedStore = create((set) => ({
  ...useStore1(set),
  ...useStore2(set),
}));

Важно: при объединении избегай конфликтов имен в состояниях и методах.