在使用Uniapp開發的過程中,我們會在很多地方用在this關鍵字,例如在methods方法中定義的函數內部,this指涉的是Vue實例。但是,在元件的created和mounted生命週期函數中,this卻指涉的是組件本身。那麼在Uniapp中,我們該如何正確使用this關鍵字呢?特別是在初始化中,我們該在哪裡放置this呢?
首先,讓我們來看看Uniapp中的初始化流程。在建立新的Uniapp專案時,系統會自動產生一個預設的main.js檔案。在這個檔案中,我們可以看到以下程式碼:
import Vue from 'vue' import App from './App.vue' Vue.config.productionTip = false const app = new Vue({ ...App }) app.$mount()
可以看到,在這個檔案中,我們透過import語句引入了Vue和App元件,並建立了一個Vue實例app。而在這個實例中,我們沒有手動綁定this關鍵字,因為Vue會自動把this指向目前的Vue實例。
我們在寫元件的時候,也可以直接使用this關鍵字來存取Vue實例上的資料和方法。例如,在一個元件的methods方法中,我們可以這樣存取Vue實例上的資料:
methods: { handleClick() { console.log(this.title) } }
這裡的this.title指涉的是Vue實例上的title屬性。
接下來,讓我們來看看this關鍵字在元件的created和mounted生命週期函數中的使用方法。
在元件的created生命週期函數中,我們可以做一些元件的初始化操作。例如,我們可以在這裡呼叫後台介面來取得一些數據,然後將它們賦值給元件的data屬性來渲染元件。在這裡,this指涉的是目前的元件實例。例如:
created() { this.getData() }, methods: { async getData() { const res = await this.$http.get('/api/data') this.list = res.data } }
這裡的this.$http.get方法是Uniapp內建的方法,用來發起網路請求。我們將後台傳回的資料賦值給了元件的list屬性,在元件的模板中就可以透過{{list}}的方式來展示資料了。
在元件的mounted生命週期函數中,我們可以存取到已經渲染的DOM元素。這裡的this同樣指涉的是目前的元件實例。例如,我們可以在這裡取得某個元素的寬度和高度,並更新資料。例如:
mounted() { const element = this.$refs.container const width = element.offsetWidth const height = element.offsetHeight this.width = width this.height = height }
這裡的this.$refs.container是存取元件中ref為container的元素節點。我們取得了元素的寬度和高度,並將它們賦值給元件的width和height屬性。
總結起來,Uniapp中的this關鍵字一般指涉的是當前的Vue實例或元件實例,根據具體的使用場景進行使用即可。在組件的created和mounted生命週期函數中使用this同樣沒有什麼問題,只需要注意this指涉的是組件實例即可。
至於初始化放在哪裡,我們可以放在元件的created生命週期函數中,也可以放在Vue實例的created生命週期函數中,具體可以根據實際需要來決定。
以上是uniapp this初始化放哪兒的詳細內容。更多資訊請關注PHP中文網其他相關文章!