小程序小知识备忘
setData和React的setState一樣是異步的嗎?
setData不是異步的,但是setData之后UI更新是異步的。因為邏輯層(App Service)和 視圖層(View)是分開的。setData的第二個參數是UI更新后的回調。
組件中this.data和this.properties是一樣的嗎?如果屬性名重復了怎么辦?
視圖中雙花括號代表什么?為什么事件綁定需要字符串?
雙花括號里面是一個表達式,表達式的數據來自當前page的data或者component的data/properties。
注意到視圖中是不能調用當前頁面實例中的方法的,這和vue/react很不一樣。
父組件不能通過properties傳遞方法給子組件,這應該就是綁定事件需要用字符串的原因(但是為什么方法不能通過properties傳遞呢???)。
屬性變化的時候(observer中)可以setData嗎?
屬性變化的時候可以設置其他的data。
小程序中真機怎么看調試信息(console)?
小程序可以通過 wx.setEnableDebugAPI來打開和關閉debug模式,并且是否是debug模式是沒辦法查詢的。
線上小程序怎么看console信息?
先在開發版或體驗版打開調試,再切到正式版就能看到vConsole。
同一個頁面被創建多次相關JS腳本會多次執行嗎?
一個頁面被多次創建,該頁面所在的JS文件并不會被執行多次,只是根據初始數據多生成了一個頁面實例(this)。在頁面JS文件中直接定義的變量,在所有這個頁面的實例間是共享的。
為什么小程序JS文件中訪問不了window、document之類的對象?
因為JS文件并不是運行在web-view環境中。
在 iOS 上,小程序邏輯層的 javascript 代碼運行在 JavaScriptCore 中,視圖層是由 WKWebView 來渲染的,環境有 iOS8、iOS9、iOS10;
在 Android 上:
舊版本,小程序邏輯層的 javascript 代碼運行中 X5 JSCore 中,視圖層是由 X5 基于 Mobile Chrome 57 內核來渲染的;
新版本,小程序邏輯層的 javascript 代碼運行在 V8 中,視圖層是由自研 XWeb 引擎基于 Mobile Chrome 67 內核來渲染的;
在 開發工具上,小程序邏輯層的 javascript 代碼是運行在 NW.js 中,視圖層是由 Chromium 60 Webview 來渲染的。
小程序中怎么獲取DOM對象相關信息?
可以通過 wx.createSelectorQuery() 方法獲取SselectorQuery對象,然后通過該對象查詢節點信息。使用的時候注意對象的選取范圍。
小程序中怎么獲取自定義組件實例?
通過this.selectComponent(‘選擇器’)即可獲取組件實例。
小程序中曝光埋點需要元素可以被用戶看見的時候才上報,怎么處理更方便?
通過IntersectionObserver對象即可
總結
- 上一篇: nth-child(n)和nth-of-
- 下一篇: 自求