跳到主要内容

微信小程序常见问题汇总

自定义 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"}