Query parameters & props url - Tylung/vue-apuntes GitHub Wiki

Todo lo que va despues del ? en una url se le llama query parameter, para poner varios query parameters se usa el &

Ejemplo:

https://www.google.com/search?q=linux&oq=linux

Si queremos mostrar el id del pokemon en PokemonPage, debemos de declarar la propiedad reactiva y una vez creado el componente, se llama a $route con sus params, es decir el parametro que es pasado en el url

Archivo: src/modules/pokemon/pages/PokemonPage.vue

<template>
    <h1>Pokemon Page</h1>
</template> 
    <h1>Pokemon: <span>#{{ id }}</span> </h1>
</template>

<script>
export default {
    props: {
        id: {
            type: Number,
            required: true
        }
    },
    data() {
        return {
            id: null
        }
    },
    
    created() {
        const { pokemonid } = this.$route.params
        console.log(pokemonid)
        this.id = pokemonid
    }
}
</script> 

En las rutas se debe de recibir el parametro con /:id

Archivo src/router/router.js

  {
      path: '/:id', 
      name: 'pokemon-id',
      component: () => import(/* webpackChunkName: "PokemonPage"*/ '@/modules/pokemon/pages/PokemonPage')  
  },

Pero al hacer esto en el router.js, no se sabe que parametros se reciben.

const { pokemonid } = this.$route.params

Hay una mejor forma de recibir las propiedades de una url

 { 
      path: '/:id', 
      name: 'pokemon-id',
      component: () => import(/* webpackChunkName: "PokemonPage"*/ '@/modules/pokemon/pages/PokemonPage')  
      props: ( route ) => { 
        const id = Number(route.params.id)
        return isNaN( Number(id) ) ? { id: 1 } : { id }
     }
}

En este bloque se llama la prop route y si no se recibe un numero se pone por defecto 1

y gracias a esto no es necesario llamarlo en el created

  created() { ✔️
        // const { pokemonid } = this.$route.params
        // console.log(pokemonid)
        // this.id = pokemonid
    }
⚠️ **GitHub.com Fallback** ⚠️