zoukankan      html  css  js  c++  java
  • 02-vue组件data为什么必须是个函数而vue的根实例则没有此限制?

    源码答案溯源

     vue组件data为什么必须是个函数 ?

    多实例的时候,保证大家的状态互相不感染,不污染。

    vue的根实例则没有此限制 ?

    根实例是单例的。new的形式。只有一个 。 从源码来看。 

    初始化会检测data的形式。从而判断执行方式。 根实例创建的时候,有实例能够拿到(是有vm的) 。只有根实例才有。有效躲过关于data选项的校验 。 普通组件当时是没有实例的。是没有办法躲过校验的。会直接被检测data的类型 。无法跳过这个地方。

    结论 :

     Vue组件可能存在多个实例,如果使用对象形式定义data, 则会导致它们共用一个data对象,那么状态变更将影响所有组件实例,这是不合理的 

    采用函数形式定义,在initData时会将其作为工厂函数返回全新data对象,有效规避了多实例之间的状态污染问题。

    而在vue根实例创建过程中则不存在该限制,也是因为根实例只有一个,不需要担心这种情况。

     
  • 相关阅读:
    c++中ctype常用函数总结(isprint isblank..)
    c++的const总结(转)
    c++重载输入输出运算符
    c++中的友元重载
    c++函数模板二栈实现
    c++函数模板1
    c++中IO输入输出流总结<二>
    c++中IO输入输出流总结<一>
    四层与七层得区别(转)
    ORACLE操作
  • 原文地址:https://www.cnblogs.com/maomao-Sunshine/p/14331574.html
Copyright © 2011-2022 走看看