mpvue 问题汇总(持续更新)

栏目: 编程语言 · 发布时间: 5年前

内容简介:上来做前后端通信测试,就遇到一个奇怪的问题,钩子函数不运行了。我也不知道具体是为什么,我觉得可能的原因是删除了东西之后dist是不会直接重新编译的。我把dist文件夹删掉重新编译问题就解决了

上来做前后端通信测试,就遇到一个奇怪的问题,钩子函数不运行了。

我也不知道具体是为什么,我觉得可能的原因是删除了东西之后dist是不会直接重新编译的。

我把dist文件夹删掉重新编译问题就解决了

Vuex使用

juejin.im/post/5c2043…

Setting data field "$root.0.registered" to undefined is invalid.
复制代码

因为我用了这么一段去读取storage,必须做一个判断,是undefined不能赋值。

另外state的赋值不能在回调中做,需要用一个闭包把data拿出来用。

initStates(states) {
    for (var key in states) {
        var data
        mpvue.getStorage({
            key,
            success(res)  {
                data = res.data
            }
        })
        if (data) {
            states[key] = data           
        }
    }
},
复制代码

EventBus

事件总线建议不要用来做通信,mpvue的一个核心优势就是适配vuex,通信用vuex是最好的 即使你只是一个小项目 ,vuex的使用成本本身很低。

那么什么情况下需要用到事件总线呢?

需求场景

我不希望登录逻辑只做在第一个页面渲染的时候,在所有需要登录的情况都能检查一遍登录。

思路

使用一个vue实例作为事件总线,监听 loginRequired 事件,执行登录逻辑。这里的登录逻辑是异步函数,因为小程序的接口是异步的。

触发事件的实例阻塞后续逻辑,持续监听 loginState 状态判断登录是否完成。

可以看到事件总线可以作为一个全局使用方法的封装,搭配Vuex可以很好地执行一些异步的功能。

实现

这里实现单独拿出来说,因为mpvue的机制和Vue不一样。

下面是我实现登录逻辑使用的eventbus

import Vue from 'vue'
import { login } from './utils/index' // 封装的一个异步登录函数

var bus = new Vue({
    methods: {
        login: async function () {
            var state = this.$store.state
            
            if (state.global.loginState <= 0) {
                this.$store.commit('changeLoginState', 1)
                await login.call(this)
            } else {
                return
            }
        },
    }
})

bus.$on('loginRequired', () => {
    console.log('on event loginRequired');
    this.a.login()
})

export default bus
复制代码

讲一下细节

$on 不能写在mounted里面

这里涉及到一个重要的点, mpvue中每个页面是一个独立的vue实例

我没有看mpvue的源码,反正这个mounted是不执行的,我测试了一下,APP.vue的mounted也是不执行的.

文档上没有注意到对这个的说法, 如果我眼瞎还请指正.

斗胆猜测一下,mpvue改了runtime,所以 new Vue() 的时候把init的一系列方法执行了,看到有文章说在打开小程序的时候所有页面的 created 钩子都执行了,而 beforMountedmounted 钩子都是在 onReady 之后执行的,可以得出一定要访问页面才会执行 mounted

this并不指向实例

注意到调用method的时候使用的是 this.a.login() 。这个是mpvue预编译的造成的,具体的可以看一下预编译后的main.js。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法小时代

算法小时代

Serge Abiteboul、Gilles Dowek / 任铁 / 人民邮电出版社 / 2017-10-1 / 39.00元

算法与人工智能是当下最热门的话题之一,技术大发展的同时也引发了令人忧心的技术和社会问题。本书生动介绍了算法的数学原理和性质,描述了算法单纯、本质的功能,分析了算法和人工智能对人类社会现状及未来发展的影响力及其成因。一起来看看 《算法小时代》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具