1.一些需要去取data中的變數的操作。我們可以運用ES6物件解構賦值來做簡化。這樣的方法我們不光可以在小程式中使用同樣也可以用到vue裡面。
// 例子(小程序) let a = this.data.a; let b = this.data.b; // ES6对象解构赋值 let {a,b} = this ; // vue let {a,b} = this.data; //小程序
2.小程式的 元件公共屬性 hidden如果不注意看文件的朋友可能就會遺漏這個公共屬性。等於css 中的display:none; 可以運用於頻繁切換的節點。
<view></view> <!-- false 为显示 true为隐藏 -->
引用官方的話來說:」一般來說,wx:if 有更高的切換消耗而hidden 有更高的初始渲染消耗。因此,如果需要頻繁切換的情景下,用hidden 更好,如果在運行時條件不大可能改變則wx:if 較好。“
3.關於text博主剛開始寫小程序的時候在wxml中使用格式化文件時踩過的坑
<!-- 这样的写法会出现换行的效果 --> <text> SevenDream SevenDream </text> <!-- 如果不需要换行的效果--> <text>SevenDream SevenDream</text>
4.關於image 有事需要渲染圖片時,連續的圖片會發現圖中間有條白縫。如果做商城方面在商品詳情中它是切片的話中間有白條很不雅觀。在image標籤加入display:bolck就好了。
<image></image>
5.關於跳轉
#如果超出最大頁面堆疊處理方法(大於10頁) ,將跳轉封裝。
//utils.js export function navigateTo(url) { let Type = getCurrentPages().length >= 10 ? 'redirectTo' : 'navigateTo' return new Promise((resolve, reject) => { wx[Type]({ url, success: res => { resolve() }, fail: err => { reject(err) }, }) }) } // 其他页面js import {navigateTo} from '../../utils/utils'; navigateTo('pages/index/index')
回到上一頁時刷新(例如返回個人中心)
wx.switchTab({ url: '/pages/my/my', success:function(){ var page = getCurrentPages().pop(); //当前页面 page.onLoad(); // 调用 onload }})
在回到上一頁時設定上一頁的值
var pages = getCurrentPages(); // 获取页面栈 var prevPage = pages[pages.length - 2]; //上一页 prevPage.setData(data); wx.navigateBack({ delta: 1 })
##6.this.setData 如果想要改變物件或陣列中的一個
//data data: { obj: { a: 1 }, array: ['1'] }, //改变对象 setOBJ:function(){ var name = 'a' var obj = 'obj.a' this.setData({ [obj]:2 }) }, //改变数组 setArr: function () { var num = 0 var arr = `array[${num}]` this.setData({ [arr]: 2 }) }
如果我們有個表單需要綁定很多bindinput,運用上面的方案,在加上data-*。不需要寫很多方法了一個就夠了
<input> <input> <input>
// 写入 data:{ FromOBJ:{ name:'', phone:'', address:'' } }, onInput: function (e) { let name = e.currentTarget.dataset.name let value = e.detail.value let valueObj = `FromOBJ.${name}`; this.setData({ [valueObj]:value }) }
7.封裝wx.request (網上有很多關於wx.requset的封裝方案,這裡展示樓主的封裝方案)
//API.js const HTTP_URL = 'https://xxxx.xxx.xxx/' function Request(url, data={},method='get',ContentType='application/json;charset=utf-8') { return new Promise((resolve, reject) => { wx.request({ url: HTTP_URL.http + url, method: method, header: { 'Content-Type': ContentType, 'xxxx': 'xxxx' // 其他header头 }, data: data, success: function (res) { resolve(res.data) }, fail: function (err) { reject(err) } }) }) } export function getApi(data) { var url = '/getapi'; return Request(url, data) } // 其他页面js import {getApi} from '../../utils/api'; getApi({a:1,b:2}).then(res=>console.log(res)).catch(err=>console.log(err))
8.其他注意的問題
#如果運用到了iconfont,是一次性將檔案全部放入的話0一定要把iconfont.js刪除。真機的時候會出現報錯。白屏無法載入的狀況。
製作動畫效果時注意建議用官方的Animation Api 或css3的animation 慎用transition
最後說一個樓主遇到的坑(可能是我的處理方式不對)。在map 元件上的層級不要使用高度變化或寬度變換的動畫過度效果,微信Animation Api和css3 transition Animation 屬性都會卡楨,卡成ppt。盡量使用他們(微信api,css3)的"transform"來解決問題。
推薦教學:《微信小程式》
以上是關於小程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!