Задать вопрос
kotcich
@kotcich
Я скучный.

Как связать передаваемую в компонент v-model с property внутри стора pinia?

Принимаю v-model в компоненте
const passedModel = defineModel<SelectDefaultModel>('model')

Стор в pinia
export const useStore = ($id: StoreID) =>
  defineStore(`select/${$id}`, () => {
    const model = ref<SelectDefaultModel>(undefined)

    return {
      model,
    }
  })

Все на composition api, vue 3.5.

Пока все что пришло в голову - это watcher. Но мне показалось это слишком грязным решением. То есть, как я понял, мне нужно заменить не значение, а саму реактивную переменную ```model = ref()``` на то, что я принимаю через v-model.
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 2
XanXanXan
@XanXanXan
defineModel нужна для двусторонней привязки модели из дочернего к родителю, а не для стора.

Для привязки к пинии достаточно привязать переменную из стора напрямую к v-model. Пиния не запрещает так делать.
Если нужно привязывать импортированную в родителе переменную пинии, то просто передать её в v-model дочернего, где есть переменная defineModelбез имени.

Можно через записываемый computed, как в ответе выше, но это скорее нужно при более сложной логике получения и установки.

Ну и самое классическое решение - в сторе сделать метод установки переменной, повесить его на обработчик в компоненте. А значение брать через :model-value
Ответ написан
director-rentv
@director-rentv
Frontend-разработчик
const store = useStore(/* че там должно быть */)

const model = computed({
  get: () => store.model.value, // мб без .value, не помню, выворачивает пиния ref-ы или нет
  set: (value) => store.model.value = value
})
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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