Pinia не очень удобна, если вы хотите делать на основе нее фабрики, единственный правильный способ работы со стором - создавать внутри состояния, функции и возвращать их. Также надо помнить, что все созданные сторы Pinia живут вплоть до закрытия вкладки и занимают память.
Как вариант, можно попробовать подобную реализацию
interface InputState {
value: Ref<string>;
props: object;
}
const useStore = defineStore(`inputs`, () => {
const inputs = new Map<string, InputState>();
function defineInput(id: string, value: Ref<string>, props = {}) {
inputs.set(id, { value, props });
}
return { inputs, defineInput };
})
В качестве альтернативы Pinia можно посмотреть на композаблы из
vueuse:
createGlobalState и
createInjectionState. Первый практически полный аналог Pinia, но более легковесный, второй позволяет создавать глобальное состояние только на поддерево компонентов и не будет занимать память, если это состояние не нужно.
P.S. задачу вы не озвучили, но почти наверняка, как вам уже написали, Pinia вам не нужна