В чате закинули интересную тему. 2 подхода к извлечению данных о текущем роуте: Props vs Composables
1. Composables
Это доступ к значению напрямую через API роутов
Тут мы достаем из id указанный в URL (также можем брать метаданные и тд)
2. Props
Но нам из коробки доступен более "нативный способ" получения параметров в компоненте-странице:
Да, данный способ доступен лишь в компоненте непосредственно являющимся корневым для страницы, но вы можете дальше использовать его по вашему усмотрению (например настроить сервисы/сторы для работы с этим id). Также в настройках роута можно тонко настроить что и как будет лететь в пропсы компонента
И как часто бывает, то однозначного ответа как лучше использовать - нет.
Вариант с композаблом будет работать везде, его можно обернуть в свой композабл для работы с роутами и прочими API, а вариант через пропсы смотрится приятнее и менее перегруженный.
Поэтому у меня тут не столько пост, сколько опрос, а что предпочитаете вы?
#router #poll
1. Composables
Это доступ к значению напрямую через API роутов
const route = useRoute()
const currentProductId = computed(() => route.params.id)
Тут мы достаем из id указанный в URL (также можем брать метаданные и тд)
2. Props
Но нам из коробки доступен более "нативный способ" получения параметров в компоненте-странице:
const id = defineProps<{
id: String
}>()
Да, данный способ доступен лишь в компоненте непосредственно являющимся корневым для страницы, но вы можете дальше использовать его по вашему усмотрению (например настроить сервисы/сторы для работы с этим id). Также в настройках роута можно тонко настроить что и как будет лететь в пропсы компонента
// /search?q=Hello
const routes = [
{
path: '/search',
component: SearchUser,
props: route => ({ query: route.query.q }
}
]
И как часто бывает, то однозначного ответа как лучше использовать - нет.
Вариант с композаблом будет работать везде, его можно обернуть в свой композабл для работы с роутами и прочими API, а вариант через пропсы смотрится приятнее и менее перегруженный.
Поэтому у меня тут не столько пост, сколько опрос, а что предпочитаете вы?
#router #poll
router.vuejs.org
Vue Router
The official Router for Vue.js
🔥10🥴5