Я использую @ nuxtjs /position-api (0.15.1), но у меня возникли проблемы с доступом к геттерам Vuex в computed ().
Это мой код в API композиции:
import { computed, useContext, useFetch, reactive } from '@nuxtjs/composition-api';
setup() {
const { store } = useContext();
const products = computed(() => {
return store.getters['products/pageProducts'];
});
const pagination = computed(() => {
return store.getters['products/pagination'];
});
useFetch(() => {
if (!process.server) {
store.dispatch('products/getPage');
}
});
return {
products,
pagination,
};
}
И консоль продолжает выводить предупреждение:
[Vue warn]: Write operation failed: computed value is readonly.
found in
---> <Pages/products/Cat.vue> at pages/products/_cat.vue
<Nuxt>
<Layouts/default.vue> at layouts/default.vue
<Root>
Я действительно смущен. Потому что я не пытался изменить вычисляемое свойство, просто получил данные с помощью AJAX, а затем просто назначил данные состоянию в мутациях Vuex.
Но я переписываю код в option API таким образом:
export default {
components: {
ProductCard,
Pagination,
},
async fetch() {
if (process.server) {
await this.$store.dispatch('products/getPage');
}
},
computed: {
products() {
return this.$store.getters['products/pageProducts'];
},
pagination() {
return this.$store.getters['products/pagination'];
},
},
};
Все работает нормально, ошибок и предупреждений нет. Я неправильно обращаюсь к геттерам в API композиции или это просто ошибка плагина @ nuxtjs / Composition-api?
fetch
в API опций, вероятно, не имеет отношения к нему, работает на сервере (if (process.server)
), а хук в API композиции - нет (if (!process.server)
). Можете ли вы ссылаться на репро (Codesandbox или GitHub)? - person tony19   schedule 20.11.2020