在 data 属性外部定义的变量,到底是单个组件实例内部独享还是多个组件实例共享? - V2EX
BruceXu

在 data 属性外部定义的变量,到底是单个组件实例内部独享还是多个组件实例共享?

  •  
  •   BruceXu May 19, 2023 2167 views
    This topic created in 1093 days ago, the information mentioned may be changed or developed.
    <script> let a = ""; export default { data() { return { b: "" }; }, }; </script> 

    代码如上图所示.环境是 vue2.

    因为一些性能和循环引用问题.想把某些变量放在 data 外面.但是这个组件本身在页面上是多实例的.

    不知是实例内部独享还是多个实例共享呢?

    个人理解:组件似乎在打包过程中变成闭包了?应该是每个实例各自隔离吧?

    6 replies    2023-05-22 14:42:13 +08:00
    coyoteer
        1
    coyoteer  
       May 19, 2023
    我试验了一下是共享的
    wu67
        2
    wu67  
       May 19, 2023
    闭包是值的跨作用域传递...
    ChefIsAwesome
        3
    ChefIsAwesome  
       May 19, 2023
    你那个 export 的玩意是工厂函数,拿来造组件实例的,不是实例本身啊。
    daliusu
        4
    daliusu  
       May 19, 2023
    你这跟 vue 半毛钱关系没有把,你把一个对象放在 data 外边,data 是每次实例创建的时候调用一下 return 一个新的对象,但是这个对象内部一些属性引用的不还是你外边的对象吗?如果不想,你可以 deepclone 一下,或者把这个外部对象也改写成调用函数获取的形式,const getData = () => ({x:1})
    BruceXu
        5
    BruceXu  
    OP
       May 22, 2023
    懂了!醍醐灌顶!感谢各位解惑!
    BruceXu
        6
    BruceXu  
    OP
       May 22, 2023
    那如果不需要加入响应式,但又每个实例隔离的话,怎么写呢?
    About     Help     Advertise     Blog     API     FAQ     Solana     1558 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 972ms UTC 16:47 PVG 00:47 LAX 09:47 JFK 12:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86