Я пытаюсь создать плагин, который использует Ax ios для получения данных из моего API и сохранения их в переменной с именем "Cache" в моем свойстве состояния vuex.
Это мой плагин :
import api from "../services/api"
import Store from "../store"
import Vue from "vue"
$this = new Vue()
let reloadCache = (param = "all") => {
let cacheFunc = {
async Clientes() {
let clientes = await api.get("/clientes")
$this.$set(Store.state.Cache, "Clientes", clientes.data)
},
async Produtos() {
let produtos = await api.get("/produtos")
$this.$set(Store.state.Cache, "Produtos", produtos.data)
},
async CondPgto() {
let condpgto = await api.get("/condpgto")
$this.$set(Store.state.Cache, "CondPgto", condpgto.data)
}
}
let attrs = Object.keys(cacheFunc)
if (param == "all") {
attrs.forEach(async (attr) => {
await cacheFunc[attr]()
})
} else {
cacheFunc[param]()
}
}
Vue.use({
install(Vue) {
Vue.prototype.$reloadCache = reloadCache
},
})
И это упрощенная версия моего компонента, для демонстрационных целей, с простым UL, отображающим содержимое одной из этих переменных Cache, и кнопкой, которая выполняет мою функцию "reloadCache" .
<template>
<div>
<button @click.prevent="reloadCache()">Update</button>
<ul>
<li v-for="(key, cliente) in Cache.Clientes" :key="key">
{{ cliente.razao }} - {{ cliente.razao1 }}
</li>
</ul>
</div>
</template>
<script>
import { mapState } from "vuex"
export default {
computed: {
...mapState(["Cache"]),
},
methods: {
reloadCache() {
this.$reloadCache()
},
},
}
</script>
А это мой файл "store. js":
import Vue from "vue"
import Vuex from "vuex"
Vue.use(Vuex)
export default new Vuex.Store({
state: {
Cache: {}
},
getters: {},
mutations: {},
actions: {}
})
Моя проблема в том, когда я пытаюсь перезагрузить данные кеша из API.
Я могу видеть новые данные в списке, если я делаю console.log в Cache, но список не обновляется и продолжает отображать старые данные.
Возможно, я совершаю какую-то глупую ошибку, но я нигде не мог найти в Интернете, как правильно это сделать.