1. 程式人生 > 程式設計 >vue 資料(data)賦值問題的解決方案

vue 資料(data)賦值問題的解決方案

總結一下我遇到的一個糾結很久的問題。

OqiREIoasx

在專案中需要用到後臺的資料對www.cppcns.com前端程式設計客棧渲染,使用到了vue整合的axios,使用vue中的鉤子函式在頁面元件掛載完成之後向後臺傳送一個get請求然後將返回後的資料賦值data()中定義的屬性:

vue 資料(data)賦值問題的解決方案

執行後前端報錯:

vue 資料(data)賦值問題的解決方案

原因:

在請求執行成功後執行回撥函式中的內容,回撥函式處於其它函式的內部this不會與任何物件繫結,為undefined。

解決方案:

一)將指向vue物件的this賦值給外部方法定義的屬性,然後在內部方法中使用該屬性

vue 資料(data)賦值問題的解決方案

二)使用箭頭函式

vue 資料(data)賦值問題的解決方案

補充:解決 vue data中資料之間的呼叫undefined問題

解決辦法:

沒法解決,根本不能這樣呼叫。

雖然data函式中的this是指向VueComponent的,(配合理解:data中的資料是可以用this呼叫props中的資料的)但是在data中呼叫另一個屬性的時候,data中的資料還沒有解析出來,因為return {}物件的時候它們中的所有資料是一起渲染解析的,所以會出現undefined問題。

(以上僅個人理解,如有錯誤,還請評論指正)

所以選擇在mounted生命週期中完成賦值操作

export default {
 data(){
  return {
  firstName:'111',lastName:'222',fullName:
程式設計客棧
'' } },mounted(){ this.fullName = this.firstName +''+this.lastName; } }

顯示結果:

vue 資料(data)賦值問題的解決方案

當然如果fullName不需要在data中定義的話,在computed程式設計客棧計算屬性中定義可能會優雅。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。