版本
2.7.3
复现链接
复现步骤
- 创建一个 Vue 2.7 仓库
- 在 setup() 中使用以 $ 开头的变量,例如
$config
预期结果
以 $ 开头的变量应该设置到组件中。
实际发生的情况
- 控制台显示警告:[Vue warn]:避免在 setup() 中使用以下划线或 $ 开头的变量。
- 以 $ 开头的变量没有设置到组件中。
这种行为仅存在于 Vue 2.7.x,与 Vue 3 和 @vue/composition-api 不同。例如,在这个 Vue 3 的复现案例中,这是可以接受的:
https://sfc.vuejs.org/#eNp9kc9qhDAQxl9lCAVdUAM9igqll75BL7lYHbcu5g+TaA+Sd+9kd11KCz0l8+WbH/NNdvHiXLWtKGrR+IFmF8BjWF2nzKydpQA7EE4FDFa7NeAIESayGjJuypRRZrDGB3jiY5rP0CZ3nr3hslh4t7SMz9npMD08ByzPT9B2R3O19cuK7G7kbRQegouA2i19QK4AmnHeYB5bJXrnlLhqrLpu3w98jI1M87Ms2c23Rj4YohC3XKXuXXXx1nDyPZnV/cErUcNVSRqnTLUSnyE4X0vppyHt6+IrS2fJt4pWE2aNFXpdfpD98kgMVqL4wZAsbkgloRmRkP5j/rL+4SZsVCZylFfe4/33RPwG5f6dbg==
6条答案
按热度按时间fgw7neuy1#
它们只是警告,不影响行为。
8cdiaqws2#
它们只是警告,不影响行为。参见 #12587
但是,在我展示的繁殖中,以 $ 开头的变量实际上没有设置到组件上。
lvjbypge3#
当我将Nuxt 2升级到Bridge版本时,这也使用了Vue 2.7.x,这种情况就发生了。
qzwqbdag4#
我fork了上面的沙箱,并添加了两个选项API和组合API案例,它们不起作用。
https://codesandbox.io/s/romantic-aj-lx4m4s
jrcvhitl5#
当我使用async setup()时,遇到了类似的问题。基本上没有其他代码。不要在setup中使用async,没有问题;在setup中使用async,有问题。
bnlyeluc6#
isReserved
检查一个字符串是否以 $ 或 _ 开头:vue/src/core/util/lang.ts
第12行到第15行的 bed04a7
这个
setup()
初始化跳过了以 $ 或 _ 开头的属性:vue/src/v3/apiSetup.ts
第62行到第66行的 bed04a7