I’m have an application where my vue component has a Select control which users can select multiple items within it. I want this property to update based on what the user selects in the dropdown. However I continue to get this error when trying to set it up
[Vue warn]: Write operation failed: computed value is readonly.
The select is used as an input so users can add or remove multiple email addresses Here are the trimmed down versions of the code showing the important bits…
index.vue
<template> <q-page class="q-pa-lg justify-evenly"> <q-select stack-label clearable filled use-input use-chips multiple hide-dropdown-icon input-debounce="0" new-value-mode="add-unique" v-model="taskRecipients" > </q-select> </q-page> </template> <script lang="ts"> import { defineComponent, ref, computed } from '@vue/composition-api'; import { Notify } from 'quasar'; export default defineComponent({ name: 'PageIndex', components: {}, setup(props, { root }) { const taskRecipients = computed(() => root.$store.getters['app/taskRecipients']); return { taskRecipients, }; } }); </script>
Advertisement
Answer
Try to make the computed property writable by adding a setter :
const taskRecipients = computed({ get:() => root.$store.getters['app/taskRecipients'], set:(val)=>{ root.$store.dispatch('changeTaskRecipients', val) // run the action that updates the state } });