vue中computed下使用箭頭函數(shù)會報錯問題及解決
vue中computed下使用箭頭函數(shù)會報錯
computed: { myPhone: () => { let num3 = this.mobile.slice(-4); let num1 = this.mobile.slice(0,-8); let str = `${num1}****${num3}`; return str; } }
這種情況下會報一個這樣的錯,其實并不是slice方法的原因,而是我們在computed中使用了箭頭函數(shù)
我們把箭頭函數(shù)換掉,就不會再報錯了。
首先我們來說一下computed的作用
- 和普通屬性一樣是在模板中綁定計算屬性,當(dāng)data中對應(yīng)數(shù)據(jù)發(fā)生改變時,計算屬性值會隨之改變。
- 計算屬性compute是基于他們的依賴(如果是實例范疇之外的依賴,比如非響應(yīng)式的notreactive是不會觸發(fā)屬性更新的)進行緩存(計算屬性的結(jié)果會被緩存),只有相關(guān)依賴會發(fā)生改變時才會重新求值,未改變只會返回只之前的結(jié)果,不在執(zhí)行函數(shù)
所以
計算屬性computed不應(yīng)該使用箭頭函數(shù)來定義計算屬性 因為箭頭函數(shù)綁定了父級作用域的上下文,所以 this 將不會按照期望指向Vue
vue中computed使用es6中箭頭函數(shù),找不到定義的變量問題
本人不建議在computed中使用es6箭頭函數(shù)
建議直接改為es5匿名函數(shù)寫法
原因
箭頭函數(shù)的this 指向箭頭函數(shù)定義時所處的對象,而不是箭頭函數(shù)使用時所在的對象,默認(rèn)使用父級的this。
首先從它的父級作用域中找,如果父級作用域還是箭頭函數(shù),再往上層找,如此直至找到this的指向在computed中使用this,由于箭頭函數(shù)綁定了父級作用域的上下文,所以 this 將不會按照期望指向Vue
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
element-plus日歷(Calendar)動態(tài)渲染以及避坑指南
這篇文章主要給大家介紹了關(guān)于element-plus日歷(Calendar)動態(tài)渲染以及避坑指南的相關(guān)資料,這是最近幫一個后端朋友處理一個前端問題,elementUI中calendar日歷組件內(nèi)容進行自定義顯示,實現(xiàn)類似通知事項的日歷效果,需要的朋友可以參考下2023-08-08VUE + UEditor 單圖片跨域上傳功能的實現(xiàn)方法
這篇文章主要介紹了VUE + UEditor 單圖片跨域上傳功能的實現(xiàn)方法,需要的朋友參考下2018-02-02關(guān)于vue設(shè)置環(huán)境變量全流程
這篇文章主要介紹了關(guān)于vue設(shè)置環(huán)境變量全流程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03Vue.js實現(xiàn)大屏數(shù)字滾動翻轉(zhuǎn)效果
大屏數(shù)字滾動翻轉(zhuǎn)效果來源于最近工作中element后臺管理頁面一張大屏的UI圖,該UI圖上有一個模塊需要有數(shù)字往上翻動的效果。本文通過截圖代碼的形式給大家介紹Vue.js實現(xiàn)大屏數(shù)字滾動翻轉(zhuǎn)效果,感興趣的朋友一起看看吧2019-11-11vue.js2.0 實現(xiàn)better-scroll的滾動效果實例詳解
better-scroll 是一個移動端滾動的解決方案,它是基于 iscroll 的重寫。better-scroll 也很強大,不僅可以做普通的滾動列表,還可以做輪播圖、picker 等等,下面通過本文給大家介紹vue.js2.0 實現(xiàn)better-scroll的滾動效果,感興趣的朋友一起看看吧2018-08-08