美文网首页
vue3 中的methods 不支持this函数

vue3 中的methods 不支持this函数

作者: 小李不小 | 来源:发表于2021-07-09 16:30 被阅读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

    相关文章

      网友评论

          本文标题:vue3 中的methods 不支持this函数

          本文链接:https://www.haomeiwen.com/subject/yfhoultx.html