美文网首页
mpvue蹲坑指南

mpvue蹲坑指南

作者: _conquer_ | 来源:发表于2019-03-12 17:59 被阅读0次

1、mpvue跳转相同路由不同页面,数据不会初始化
例如:当lottery_id=1的时候,apply_list是有数据的,然后我们退出,lottery_id=2进入的时候,apply_list是没有数据的,但是apply_list并不会被初始化为空数组

data(){
  return{
    apply_list:[],
  }
},
onLoad(){
  this.lottery_id=this.$root.$mp.query.lottery_id?this.$root.$mp.query.lottery_id:0;
  this.getData();
},
methods:{
  getData(){
      var that = this;
      api.detail({lottery_id:that.lottery_id}).then(res => {
            if(res.apply_list.length>0){
                that.apply_list=res.apply_list;
            }
      })
  }
}

解决办法:

  • 第一种:判断 res.apply_list.length==0的时候也让that.apply_list=res.apply_list
  • 第二种:在进入子页面时获取数据的生命周期中手动重置数据
onLoad(){
  Object.assign(this.$data, this.$options.data())
}

2、不支持在 template 内使用 methods 中的函数
3、不支持过滤器(可以使用es6的filter)
4、自定义tab栏
小程序使用方法:

  • 在 app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整。
  • 所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。
  • 在代码根目录下添加入口文件:
custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss

mpvue 自定义tab栏

自定义组件新增 getTabBar 接口,可获取当前页面下的自定义 tabBar 组件实例。
5、button获取用户信息的时候如何传参

// html
<button plain="true" open-type="getUserInfo" @getuserinfo="onGetUserInfo" data-id="aaa" >
//js
onGetUserInfo:function(res){
  console.log(res.currentTarget.dataset.id)//传递的参数值
}

6、当前页面无法执行上一页的方法
小程序可以在当前页执行上一页的方法

var pages = getCurrentPages();
if (pages.length > 1) {
  var prePage = pages[pages.length - 2];
  prePage.getData()
 }

在mpvue里面,可以执行跨页面执行onload方法,但是onload里面获取不到页面地址传递的参数

var pages = getCurrentPages();
if (pages.length > 1) {
   var prePage = pages[pages.length - 2];
   prePage.onLoad()
}

7、单页面如何配置config
在页面文件夹下面新建一个main.json文件。以为用下拉刷新来举例

{
    "enablePullDownRefresh":true
}

8、生命周期
首先我们需要了解,微信小程序的生命周期:
App对象,主要有onLaunch, onShow和onHide
Page对象,主要有onLoad, onShow, onReady, onHide和onUnload

  • 由于newPage页面的beforeCreate和created已经提前被触发过了,在调用了wx.NavigateTo跳转到newPage时,先触发小程序的生命周期,再触发beforeMount,这时候开始创建子组件card的实例,按照beforeCreate -> created -> onLoad -> onReady -> beforeMount -> mounted 的顺序触发生命周期钩子。(这里组件的onShow为什么没有触发..需要再深入探究一下)

在created中获取数据? 在mpvue中,created只被触发一次,且在页面创建前被触发,也就是说query中的数据是无法获得的,再次访问页面时如果数据发生了变化,created中的逻辑也并不会再次执行。

推迟到beforeMount? 从功能上说,在beforeMount获取数据是没有问题的。但由于页面unload时没有触发destroy,在再次加载页面时,Vue实例仍然保存着前一次获得的数据,而页面的onLoad、onShow均在beforeMount之前被触发,实践时会发现,页面在数据更新之前就会被显示出来,旧的数据会在页面中“一闪而过”。

在onLoad中获取数据? 实践证明这的确是一种最稳妥的方法,数据能被正确地设置,页面也不会“闪”。 但是官方文档有这样一句话: 除特殊情况外,不建议使用小程序的生命周期钩子。 这里大概是为了代码的移植性做考虑吧,不知道这里算不算特殊情况呢。

使用computed?为了避免使用小程序的生命周期钩子,还可以考虑使用computed的来获取query中的内容,而query需要在页面onLoad之后才存在,这里需要注意做一些判断。

相关文章

  • mpvue蹲坑指南

    1、mpvue跳转相同路由不同页面,数据不会初始化例如:当lottery_id=1的时候,apply_list是有...

  • 美团小程序框架mpvue入门教程

    美团小程序框架mpvue入门教程 自打写了 美团小程序框架mpvue蹲坑指南,一发不可收拾,今天趁周末空闲,来写个...

  • 美团小程序框架mpvue蹲坑指南

    美团小程序框架mpvue(花名:没朋友)蹲坑指南 第一次接触小程序大概是17年初,当时小程序刚刚内侧,当时就被各种...

  • mpvue生存指南

    mpvue (github 地址请参见)是一个使用 Vue.js 开发小程序的前端框架。框架基于 Vue.js核心...

  • mpvue“踩坑”指南

    mpvue是一个使用 Vue.js 开发小程序的前端框架。框架基于 Vue.js 核心,框架整体和vue语法保持一...

  • mpvue搭建小程序框架

    http://mpvue.com/mpvue/ 美团开源了mpvue 由于mpvue框架是完全基于Vue框架的(重...

  • mpvue 使用echarts---mpvue-echarts

    安装 mpvue-echarts地址mpvue-echarts $ cnpm install mpvue-echa...

  • mpvue学习笔记一:初始化一个mpvue项目

    官方文档:http://mpvue.com/mpvue/quickstart/#1-mpvue 1.安装nodej...

  • 2018-04-25

    1.http://mpvue.com/mpvue/quickstart/ // mpvue 小程序的使用 2.n...

  • 蹲坑

    生活有点像蹲坑 在不经意间抽烟了一支烟 缺没有干完蹲坑的事 想法会很多 但实施特别难 顺畅的走一遍 心情愉悦 ...

网友评论

      本文标题:mpvue蹲坑指南

      本文链接:https://www.haomeiwen.com/subject/wszzuqtx.html