在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1. 生命周期和相关函数 Page({ data: {}, // Page 实例的生命周期函数 onLoad: (option) => { // 页面初次加载时候触发,只会触发一次 console.log(option.id) // 1 }, onReady: () => {}, // 页面初次渲染完毕,只会触发一次(页面已经准备妥当,在逻辑层可以和视图层进行交互了) onShow: () => {}, // 从别的页面进入到当前页面时调用 onHide: () => {}, // wx.navigateTo 切换到其他页面或者底部tab切换时触发 onUnload: () => {}, // 使用 wx.redirectTo 或者 wx.navigateBack 返回其他页面时候触发,当前页面会被销毁 // 页面用户行为 onPullDownRefresh: () => {}, // 需要在app.json的window选项中或页面配置中开启enablePullDownRefresh onReachBottom: () => {}, // 可以在app.json的window选项中或页面配置中设置触发距离onReachBottomDistance onShareAppMessage: () => { // 此事件需要 return 一个 Object,用于自定义转发内容 return { title: 'xxx', path: '/yyy', } }, onPageScroll: (obj) => { console.log(obj.scrollTop) // 页面在垂直方向已滚动的距离(单位px) }, // 其他自定义函数 getData: () => { this.formatDate() // 用 this.func 来访问实例中的函数 }, formatDate: () => {}, }) 2. this.setDate this.setDate({ key: value }, callback) key 的值非常灵活,可以以数据路径的形式给出(字符串形式),示例: data: { myInfo: { name: 'wangxi', age: '26' }, user: [{ nickName: 'Tony' gender: 'male' }] } this.setData({ 'userInfo.name': 'Raychan' 'user[0].gender': 'female' }) setDate会更新 this.data 中对应的值(同步的过程) 不要直接修改 this.data (注意和 vue 中修改数据的方式加以区别) 综上,下面的代码是可以获取到到对应的data值的(和 React 中的 setState 不同) data: { name: 'wangxi' } this.setData({ name: 'Raychan' }) console.log(this.data.name) // Raychan 3. 路由 getCurrentPages() // 获取当前页面栈的实例 4. 模块化 // 公共代码导出 module.export.funcName = funcName // 引用 var name = require('funcName') 5. 模板 // define <template name='tpl'></template> // usage <template is='tpl'></template> 6. 运行机制 7. 请求API wx.request({ url: 'test.php', data: {}, header: { 'content-type': 'application/json' }, success: function(res) { // 收到https服务成功后返回 console.log(res.data) }, fail: function() { // 发生网络错误等情况触发 }, complete: function() { // 成功或者失败后触发 } }) 8. 获取系统信息 wx.getSystemInfoSync() 9. 页面交互反馈 // view 容器和 button 组件提供了 hover-class 属性,触摸时会在该组件上加上对一个的样式 <view hover-class="clsName"></view> // 在耗时操作时加上 loading 属性 <button loading="{{loading}}" bindtap="tap"></button> data: { loading: false } tap: () => { this.setData({ loading: true }) // ajax etc... } 10. 显示隐藏 toast wx.showToast({ title: 'xxx', icon: 'success', duration: 1500, // 1.5 秒后消失 }) wx.hideToast() 11. modal wx.showModal({ title: '标题', content: '告知当前状态,信息和解决方法', confirmText: '主操作', cancelText: '次要操作', success: function(res) { if (res.confirm) { console.log('用户点击主操作') } else if (res.cancel) { console.log('用户点击次要操作') } } }) 12. HTTP 请求 var hasClick = false; Page({ tap: function() { if (hasClick) { return } hasClick = true wx.showLoading() wx.request({ url: 'https://test.com/getinfo', method: 'POST', header: { 'content-type':'application/json' }, data: { }, success: function (res) { if (res.statusCode === 200) { console.log(res.data)// 服务器回包内容 } }, fail: function (res) { wx.showToast({ title: '系统错误' }) }, complete: function (res) { wx.hideLoading() hasClick = false } }) } }) 13. 排查异常的方法
14. 缓存
wx.getStorage({ key: 'key1', success: res => { console.log(res) }, fail: (err) => { console.log(err) } }) try { const value = wx.getStorageSync('key2') } catch (e) { console.log(e) } // 写缓存 wx.setStorage({ key: 'key1', data: 'value1' success: res => { console.log(res) }, fail: (err) => { console.log(err) } }) 利用本地缓存提前渲染界面 Page({ onLoad: function() { var that = this var list =wx.getStorageSync("list") if (list) { // 本地如果有缓存列表,提前渲染 that.setData({ list }) } wx.request({ url: 'https://test.com/getproductlist', success: function (res) { if (res.statusCode === 200) { list = res.data.list that.setData({ list }) // 再次渲染列表 wx.setStorageSync("list", list) // 覆盖缓存数据 } } }) } })
|
请发表评论