问题
vue2 项目开发过程中报错:
Property “_showTooltip” must be accessed with “$data.showTooltip" because properties starting with “$” or "” are not proxied in the Vue instance to prevent conflicts with Vue internals.
百度过后,发现网上出现这个问题的原因有很多,但是对照自己的代码并没有得到什么帮助。
排查过后,发现报错是因为定义了带有 _ 或 $ 前缀的变量,初始化时没有对其进行赋值操作所导致的(手动对带有 _ 或 $ 前缀的变量进行等号赋值,如:this._test = xxx )。
解决方法
知道了问题所在之后,就很好解决了,我们只需要在初始时对带有 _ 或 $ 前缀的变量进行等号赋值即可,而作者项目中带有 _ 或 $ 前缀的变量是 watch 监听 props 传入值后赋值的,那么这种情况给 watch 监听器添加初次监听就可以了(添加 immediate: true 属性)