我在Vue Mastery上一门课程,发现了这样的代码:
export default {
data() {
const times = []
for (let i = 1; i <= 24; i++) {
times.push(i + ':00')
}
return {
event: this.createFreshEvent(),
times,
categories: this.$store.state.categories,
}
},
methods: {
createFreshEvent() {
const user = this.$store.state.user
return {
organizer: user,
attendees: []
}
}
}
}
data
属性使用方法?有区别吗?data()
不仅只有声明,而且我们没有在created()
生命周期挂钩中生成以上所有内容?答案 0 :(得分:0)
对于问题1和3,最好问问创建者。没有真正的理由这样做。我不会像他那样做,但确实使用created
或mounted
方法。
问题2:
在组件的data选项中必须是一个函数,以便每个实例 可以维护返回数据对象的独立副本:
https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function
答案 1 :(得分:0)
通过Vue对created
生命周期挂钩的定义:https://vuejs.org/v2/api/#created
在创建实例后同步调用。在这个阶段, 实例已完成对选项的处理,这意味着 已设置:数据观察,计算属性,方法, 观看/事件回调。但是,安装阶段尚未完成 已启动,并且$ el属性尚不可用。
因此在data()
中生成数据将不会触发任何相关的计算属性,即监视/事件回调。如果您在created
中生成这些数据,并且您的组件在times
上具有监视程序,则将有不需要的监视回调。
顺便说一句,我对categories
中this.$store.state.categories
的初始化感到困惑。无需从vuex将共享数据存储在本地data
中。