vue3 中的methods 不支持this函数

2021-07-09  本文已影响0人  小李不小

Vue 自动为 methods 绑定 this,以便于它始终指向组件实例。这将确保方法在用作事件监听或回调时保持正确的 this 指向。在定义 methods 时应避免使用箭头函数,因为这会阻止 Vue 绑定恰当的 this 指向。

案例1

methods 使用普通函数式定义方式,看下图结果,是没有任何问题的

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="https://unpkg.com/vue@3.1.4/dist/vue.global.js"></script>
</head>
<body>

<div id="app">
  <!-- `greet` 是在下面定义的方法名 -->
  <button @click="greet">点我</button>
</div>


    <script type="text/javascript">
        
    const app ={
        data(){
                return{
                    name:'runoob'
                }
        },
        methods:{
            greet(){
                console.log('111---',this)
            }
        }
    }

    Vue.createApp(app).mount('#app')
    </script>

</body>
</html>
image.png

案列2

methods 使用箭头函数式定义方式,看下图结果,是报错的

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="https://unpkg.com/vue@3.1.4/dist/vue.global.js"></script>
</head>
<body>

<div id="app">
  <!-- `greet` 是在下面定义的方法名 -->
  <button @click="greet">点我</button>
</div>


    <script type="text/javascript">
        
    const app ={
        data(){
                return{
                    name:'runoob'
                }
        },
        methods:{
            greet()=>{
                console.log('111---',this)
            }
        }
    }

    Vue.createApp(app).mount('#app')
    </script>

</body>
</html>
image.png
上一篇下一篇

猜你喜欢

热点阅读