mpvue(github 地址请参见)是一个使用Vue.js 开发小程序的前端框架。框架基于Vue.js核心,mpvue修改了Vue.js的runtime 和compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套Vue.js开发体验。 ...
由来已久一直以来,我都在用mpvue来编写小程序应用,虽然问题很多,不过都有替代方案。 比如在mpvue中,slot(插槽)中的内容不能动态的渲染,那我们可以放弃使用slot内使用动态数据。该问题在github中有多人反应。 再比如在mpvue中,自定义指令会直接导致编译报错,那么我们可以放弃使用自定义指令。该问题在github中也有多人反应。 但是今天的问题实在太严重,我一定要吐槽一下。 bug现象我们在开发过程中,发现在某种情况下,页面UI层的更新时机全部错乱。即 数据变更后,只有在下次的onShow生命周期里有体现(有种“慢一拍”的感觉),整体的感觉就是 页面的展示和交互完全瘫痪 。 bug调查我们花了整整一天的时间调查,最后发现问题是 在自定义组件上动态为v-if绑定值赋值上 。 将代码精简到十几行就可以复现bug。 bug再现记住,这是一个mpvue项目。我在src/pages/目录下新建一个test页面,对应的index.vue文件的代码如下,逻辑很简单,就是利用v-if控制一个组件的显示:
<template>
<test v-if="show">test>
template>
<script>
import test from '@/components/posterTest.vue'
export default {
data () {
return { show: true }
},
onShow () {
this.show = false //在onShow生命周期里,先将v-if绑定值置位false,2秒再置位true
setTimeout(() => { this.show = true }, 2000)
},
components: { test }
}
script>复制代码
其中引入了posterTest组件。为了调查bug,我将多余的操作处理全部去掉,只有一张图片,它的代码如下:
<template lang="html">
<div class="poster">
<img src="https://interactive-examples.mdn.mozilla.net/media/examples/firefox-logo.svg" alt="">
div>
template>
<script>
export default { }
script>复制代码
|
*请认真填写需求信息,我们会在24小时内与您取得联系。