微信小程序常见问题汇总
自定义 tabbar 字体图标不显示问题
问题
在 app.wxss 引入了阿里图标导入的样式 iconfont.wxss,但是在自定义 custom-tab-bar 中不显示
解决
在 custom-tab-bar 的 index.wxss 中导入字体图标样式@import "../styles/iconfont.wxss";
自定义 tabbar 字体图标不显示问题
真机调试 2.0 中无法显示 storage 中的数据
解决
改为真机调试 1.0
小程序 中动态设置 tabbar
问题
项目需求根据权限动态设置 tabbar 中的菜单
在自定义 tabbar 中的生命周期中动态设置生命周期中根据权限设置 tabbar 中 data
(按 vue 习惯一般都是在 create 中) 但是实际修改中发现怎么 this.setData 都不生效
解决
根据这篇文章发现 微信小程序底部实现自定义动态Tabbar
需要在 tabbar 对应页面中调用 this.getTabBar().setData(tabData)
// page
onShow: function () {
this.getTabBar().init();
createDynamicTabBar(this);
}
// 创建动态 TabBar
function createDynamicTabBar(view) {
let newList = [];
// ... 权限判断
view.getTabBar().setData({
list: newList,
});
}
小程序中使用分包
app.json
"subpackages": [
{
"root": "分包名",
"pages": [
"pages/xxx/xxx",
]
}
],
主包或其他分包跳转分包页面
wx.navigateTo({
url: '分包名/pages/xxx/xxx',
});
小程序中使用echarts
Component 构造器构造页面
Page 构造器适用于简单的页面。但对于复杂的页面, Page 构造器可能并不好用。
此时,可以使用 Component 构造器来构造页面。 Component 构造器的主要区别是:方法需要放在 methods: { } 里面。
page 的生命周期都放到 methods: { } 里面
Component({
behaviors: [],
// 属性定义
properties: {
myProperty: { // 属性名
type: String,
value: ''
},
myProperty2: String // 简化的定义方式
},
data: {}, // 私有数据,可用于模板渲染
lifetimes: {
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
attached: function () { },
moved: function () { },
detached: function () { },
},
// 生命周期函数,可以为函数,或一个在methods段中定义的方法名
attached: function () { }, // 此处attached的声明会被lifetimes字段中的声明覆盖
ready: function() { },
pageLifetimes: {
// 组件所在页面的生命周期函数
show: function () { },
hide: function () { },
resize: function () { },
},
methods: {
onLoad: function(options) {
// 页面创建时执行
},
onPullDownRefresh: function() {
// 下拉刷新时执行
},
// 事件响应函数
viewTap: function() {
// ...
},
onMyButtonTap: function(){
this.setData({
// 更新属性和数据的方法与更新页面数据的方法类似
})
},
// 内部方法建议以下划线开头
_myPrivateMethod: function(){
// 这里将 data.A[0].B 设为 'myPrivateData'
this.setData({
'A[0].B': 'myPrivateData'
})
},
_propertyChange: function(newVal, oldVal) {
}
}
})
常见网络错误提示
请求超时
{"errno":5,"errMsg":"request:fail timeout"}
{"errno":600001,"errMsg":"request:fail errcode:-118 cronet_error_code:-118 error_msg:net::ERR_CONNECTION_TIMED_OUT"}