微信小程序常见问题汇总

自定义 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"}
posted @ 2022-01-05 12:35  __Bowen  阅读(1107)  评论(0编辑  收藏  举报