小程式報錯坑系列及解決

2021-09-24 17:09:13 字數 2256 閱讀 3296

component constructors should be called while initialization. a constructor call has been ignored.

component像頁面一樣由wxml、wxss、js和json4個檔案組成,且需要把這4個檔案放在同乙個目錄中。與頁面不一樣的是,component中的建構函式(也可以稱構造器)是component({}),而頁面中的建構函式是page({})。

錯誤案例二

referenceerror: ***xx is not defined

如:var countx = county = countz = 0;  js中是可以這樣寫

解決方法:按照規範命名變數

var countx = 0,county = 0,countz = 0;

var countx = 0;

var county = 0;

var countz = 0;

錯誤案例三

this.setdata is not a function報錯處理

這種情況一般會出現在 wx.request({})中使用時,類似success: function (res) 無法使用this.setdata,

所以在前面加一句:var that = this;即可解決問題

setdata是非同步,而this.data是同步的

錯誤案例四

cannot read property 'setdata' of undefined;at pages/index/index page changtext function

typeerror: cannot read property 'setdata' of undefined

在es6 的寫法是這個樣子的

changtext:() => {

this.setdata({

motto: "dad"

在es5下 是正常顯示

changtext: (function () {

console.log(this);

this.setdata({

motto: "dad"

為什麼es5正確顯示而es6卻不行呢?

箭頭函式表示式的語法比函式表示式更短,並且不繫結自己的this,arguments,super或 new.target。這些函式表示式最適合用於非方法函式,並且它們不能用作建構函式。

其實說白了es6的箭頭函式和es5 function函式看起來差不多,只是寫法簡化了,其實是不一樣的,function宣告的函式和箭頭函式的作用域不同,這是乙個不小心坑的地方。

所以對於這個結果,還是換回es5的function函式去寫最好了。

箭頭函式和function的區別

箭頭函式體內的this物件,就是定義時所在的物件,而不是使用時所在的物件

箭頭函式不可以當作建構函式,也就是說,不可以使用new命令,否則會丟擲乙個錯誤

箭頭函式不可以使用arguments物件,該物件在函式體內不存在。如果要用,可以用rest引數代替,不可以使用yield命令,因此箭頭函式不能用作generator函式。

錯誤案例五遇到警告

warning: now you can provide attr "wx:key" for a "wx:for" to improve performance.

相當於取乙個別名  沒有說明什麼實際效果   隨便起名字   就可以消除錯誤

錯誤案例六this的指向問題

原文:

小程式 跳坑

關於元件 1.元件中包含定時器,頁面離開定時器的清除 問題 在頁面離開後倒計時仍在繼續 解決 在頁面離開時清除定時器 2.場景 頁面中包含不同tab頁面,各tab頁面模板一致,模板內包含的元件id也一樣,在tab切換時重新整理tab頁內資料。解決 在tab切換時先將舊資料字段清空 3.場景 把lis...

小程式的坑

一 input元件的問題 1 placeholder 文字與 input 的值重疊 暫無解決方法 2 獲取焦點 和 失去焦點 時,游標和文字跳動 暫無解決方法 3 當 input 設定為居中對齊時,游標會出現在奇怪的位置 暫無解決方法 4 bindconfirm 事件在失去焦點時也會觸發,類似於 b...

微信小程式中未解決的坑

1 movetolocation的問題 在onload中初始化了地圖 this.mapctx wx.createmapcontext map 但是立馬呼叫 this.mapctx.movetolocation 是不會執行的,可能是因為createmapcontext是非同步的原因,但是官方文件沒有說...