Я пытаюсь выяснить, как обрабатывать внешнюю проверку моих маршрутов в NuxtJS.
Допустим, у меня есть страница сообщений, которая загружается динамически
{ path: '/posts/:id?', name: 'posts-id', component: Post }
Затем, чтобы проверить, есть ли фактическое сообщение с данным идентификатором, мне нужно вызвать мой API и либо получить сообщение, либо обработать 404.
AsyncData
дает мне такую возможность на примере ниже
export default {
asyncData ({ params, error }) {
return axios.get(`https://my-api/posts/${params.id}`)
.then((res) => {
return { title: res.data.title }
})
.catch((e) => {
error({ statusCode: 404, message: 'Post not found' })
})
}
}
Тем не менее, он устанавливает данные для компонента, НО я хочу, чтобы это было установлено в моем магазине Vuex. Это решается изменением asyncData
на fetch
и позволяет мне напрямую изменять и вызывать действия. Непосредственно мутировать неправильно, но если я использую действие, я не могу обработать ошибку 404.
Итак, как мне это сделать?