如果我想验证动态资源是否存在,Nuxt建议validate()在页面组件中实现调用。如果该调用执行数据的 API 请求以验证资源的存在,Nuxt 文档说明我可以检查 Vuex 存储,但没有明确说明我可以dispatch执行操作以commit获取 API 请求接收的数据。在store该范围内validate()的方法允许调用dispatch与Vuex店就如同和同步asyncData或fetch,但是这会是一个反模式-从内部数据提交给Vuex validate()?
例如,您还可以检查商店中的一些数据(在操作之前由 nuxtServerInit 填充
commit从内部获取数据的需求validate()将防止在同一资源内asyncData或fetch对同一资源进行重复的 API 调用。例如,如果我调用validate()请求一个资源的存在并且我没有commit将该资源的数据发送给 Vuex,我可能需要再次从asyncData或请求该资源数据fetch。
validate ({ app, params, store }) {
return app.$axios.get('client/cards', {params: { slug: params.card }})
.then(() => true)
.catch(() => false)
}
Run Code Online (Sandbox Code Playgroud)
本质上是复制相同的 API 请求,但在操作中:
async fetch ({ params, store }) {
await store.dispatch('card/getCard', params.card)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |