• 声明响应式属性

    声明响应式属性

    由于 Vue 不允许动态添加根级响应式属性,所以你必须在初始化实例前声明所有根级响应式属性,哪怕只是一个空值:

    1. var vm = new Vue({
    2. data: {
    3. // 声明 message 为一个空值字符串
    4. message: ''
    5. },
    6. template: '<div>{{ message }}</div>'
    7. })
    8. // 之后设置 `message`
    9. vm.message = 'Hello!'

    如果你未在 data 选项中声明 message,Vue 将警告你渲染函数正在试图访问不存在的属性。

    这样的限制在背后是有其技术原因的,它消除了在依赖项跟踪系统中的一类边界情况,也使 Vue 实例能更好地配合类型检查系统工作。但与此同时在代码可维护性方面也有一点重要的考虑:data 对象就像组件状态的结构 (schema)。提前声明所有的响应式属性,可以让组件代码在未来修改或给其他开发人员阅读时更易于理解。