asyncData
等待数据加载,以便它可以创建组件。然后甚至在创建组件之前就执行beforeCreate
。我的问题是它们不能一样工作。beforeCreate
在实例初始化之后,在数据观察和事件/观察者设置之前立即被同步调用。与asyncData
的区别在于beforeCreate
发生在您的浏览器中,asyncData
发生在服务器端。
这意味着在asyncData
中,您无法访问localStorage
,fetch()
或document
之类的内容,因为它是在服务器端执行的。
但是asyncData
提供了一个称为context
的参数。
上下文有点特殊,它允许您访问例如Vuex商店女巫通常位于客户端:https://nuxtjs.org/api/context/
asyncData(context){
console.log(context.store); //you need to check your server console NOT! your browser console
}
您经常会看到人们使用ES6解构来访问该属性:
asyncData({ store }){ console.log(store); //you need to check your server console NOT! your browser console }
当然,您可以解构更多属性:
asyncData({ store, redirect, query, params }){ console.log(store); //you need to check your server console NOT! your browser console }