vue.js - 使用 asyncData/fetch 进行验证 - 从 Validate 中提交数据?
问题描述
如果我想验证动态资源是否存在,Nuxt建议validate()
在页面组件中实现调用。如果该调用执行数据的 API 请求以验证资源的存在,Nuxt 文档声明我可以检查 Vuex 存储,但没有明确声明我可以dispatch
执行操作以commit
获取 API 请求接收到的数据。inside方法允许调用和同步Vuex存储,就像使用or一样,但这会是一种反模式 - 从内部向 Vuex 提交数据store
吗?validate()
dispatch
asyncData
fetch
validate()
例如,您还可以检查商店中的一些数据(在操作之前由 nuxtServerInit 填充
需要commit
从内部获取数据将防止在同一资源内或对同一资源validate()
的重复 API 调用。例如,如果我调用请求资源的存在并且我没有将该资源的数据发送给 Vuex,我可能需要再次从 with或请求该资源数据。asyncData
fetch
validate()
commit
asyncData
fetch
validate ({ app, params, store }) {
return app.$axios.get('client/cards', {params: { slug: params.card }})
.then(() => true)
.catch(() => false)
}
本质上复制了相同的 API 请求,但来自操作内部:
async fetch ({ params, store }) {
await store.dispatch('card/getCard', params.card)
}