Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

210
Visualizações
API de composición de Nuxt, actualizando 'estado', no reflejado en la plantilla de interfaz de usuario

Tenía una aplicación Nuxt.js trabajando con la API de opciones. Y con el lanzamiento del nuevo Nuxt3, estaba tratando de migrar las cosas a la alternativa supuestamente "mejor". Hasta ahora no he tenido más que desafíos, tal vez esa es mi falta de conocimiento.

Estoy construyendo una plataforma básica de comercio electrónico con un componente de

 # 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>

Una cosa que debo tener en cuenta es que, si el producto recibe un comentario/calificación, quiero que la interfaz de usuario se actualice con la calificación de estrellas del producto, por lo que necesita más reactividad.

Sigo recibiendo una variable de producto undefined

Dentro de mi tienda VueX tengo mis getters

 loaded: state => (id) => { try { if (id) { return state.loaded[id] } return state.loaded } catch { return {} } }

Buscando instrucciones sobre cómo hacer que esto funcione, mejore cualquiera de los códigos que he configurado actualmente.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si desea mantener una referencia reactiva a su captador, debe crear una propiedad computada .

Entonces, lo que devuelve de su función de configuración es

product: computed(() => getters['products/loaded'](route.value.params.id))

Esto asegurará que cada vez que se actualice el captador, su componente recibirá esa actualización.

Además, si el producto ya existe, debe abandonar la función de búsqueda. Para que no realice la llamada API adicional.

Y, finalmente, si hay un error, podría redirigir a una página de error 404.

Con todo, su función de configuración podría verse así

 setup() { const route = useRoute(); const { error } = useContext(); const { getters, dispatch } = useStore(); const loading = ref(false); const alreadyExistingProduct = getters['products/loaded'](route.value.params.id); const { fetch } = useFetch(async () => { // NEW: bail if we already have the product if (alreadyExistingProduct) return; try { loading.value = true; await dispatch('products/getOne', route.value.params.id); } catch { // NEW: redirect to error page if product could not be loaded error({ statusCode: 404 }); } finally { loading.value = false; } }); watch(route, () => { if (route.value.params.id) { fetch(); } }); return { loading, // NEW: computed property to maintain reactive reference to getter product: computed(() => getters['products/loaded'](route.value.params.id)), }; },

Probablemente también te encuentres con este problema inofensivo FYI.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda