【发布时间】:2021-11-25 05:57:37
【问题描述】:
我有一个使用选项 API 的 Nuxt.js 应用程序。随着新 Nuxt3 的问世,我试图将事物迁移到所谓的“更好”的替代方案。到目前为止,我只有挑战,也许那是我缺乏知识。
我正在构建一个包含以下组件的基本电子商务平台
# products/_id.vue
<template>
<div>
{{ product }}
</div>
</template>
<script>
import {
defineComponent,
useFetch,
useStore,
useRoute,
ssrRef, reactive, watch
} from '@nuxtjs/composition-api'
export default defineComponent({
setup () {
const store = useStore()
const route = useRoute()
const loading = ref(false)
// LOAD PRODUCT FROM VUEX STORE IF ALREADY LOADED
const product = reactive(store.getters['products/loaded'](route.value.params.id))
// GET PAGE CONTENT
const { fetch } = useFetch(async () => {
loading.value = true
await store.dispatch('products/getOne', route.value.params.id)
loading.value = false
})
// WATCH, if a use navigates to another product, we need to watch for changes to reload
watch(route, () => {
if (route.value.params.id) {
fetch()
}
})
return {
loading
product
}
}
})
</script>
我需要注意的一点是,如果产品获得评论/评级,我希望 UI 更新为产品星级,因此需要更多的反应性。
我继续获得undefined 产品变量
在我的 VueX 商店里,我有我的吸气剂
loaded: state => (id) => {
try {
if (id) {
return state.loaded[id]
}
return state.loaded
} catch {
return {}
}
}
寻找有关如何使其工作的指导,改进我当前设置的任何代码。
【问题讨论】:
标签: javascript nuxt.js vuex vue-composition-api