小程序wepy踩坑记

最近又要做小程序了
同事推荐了一个微信官方的框架wepy

问题1
编译之后发现不能正确运行
把这个去掉就好了 (代码压缩也要去掉,这个也会引发一些问题)


图片.png

这样我们就能像开发vue一样开发小程序了
npm run dev运行

得到 / 改变变量的值

//传统模式
self.setData({userInfo: userinfo});

//wepy
var self = this
self.setTimeoutTitle = '到三秒了'
 self.$apply()

调用全局app.wpy 的方法

this.$parent.getUserInfo(function (userInfo) {
  
})

组件通信

// parent.wpy

<child :title="parentTitle" :syncTitle.sync="parentTitle" :twoWayTitle="parentTitle"></child>

data = {
    parentTitle: 'p-title'
};


// child.wpy

props = {
    // 静态传值
    title: String,

    // 父向子单向动态传值
    syncTitle: {
        type: String,
        default: 'null'
    },

    twoWayTitle: {
        type: String,
        default: 'nothing',
        twoWay: true
    }
};

onLoad () {
    console.log(this.title); // p-title
    console.log(this.syncTitle); // p-title
    console.log(this.twoWayTitle); // p-title

    this.title = 'c-title';
    console.log(this.$parent.parentTitle); // p-title.
    this.twoWayTitle = 'two-way-title';
    this.$apply();
    console.log(this.$parent.parentTitle); // two-way-title.  --- twoWay为true时,子组件props中的属性值改变时,会同时改变父组件对应的值
    this.$parent.parentTitle = 'p-title-changed';
    this.$parent.$apply();
    console.log(this.title); // 'c-title';
    console.log(this.syncTitle); // 'p-title-changed' --- 有.sync修饰符的props属性值,当在父组件中改变时,会同时改变子组件对应的值。
}

问题2
启用promise
启用promise后原生的 wx.requst就不能用了。。。
要换成promise的写法

    进入项目根目录,安装polyfill

npm install wepy-async-function --save

    在app.wpy中引入polyfill

import 'wepy-async-function'; 

    在app.wpy中使API promise化

export default class extends wepy.app {

    constructor () {
        super();
        this.use('promisify');
    }

}

问题3
录音后,开发者工具无法播放在本地缓存的声音
但是手机预览的可以的

问题4
wxParse 富文本解析组件无法使用

原因 wxParse.js中的
that.setData(bindData) 无法生效,导致数据无法绑定上去

解决办法
wxParse.js 返回数据,在使用页面中
用 this.xxx = xxx 绑定
再通过 this.$apply() 同步上去

图片.png
图片.png
图片.png

结果


图片.png

问题4
音频播放回掉函onTimeUpdate数没作用
解决方法
调用回掉函数 onPlay()和onPause()就好了

innerAudioContext.onTimeUpdate((res) => {
   console.log(12313)
})
innerAudioContext.onPlay((res) => {})
innerAudioContext.onPause((res) => {})

问题5
组件改动后,页面没效果
解决方法
父组件的改动才能让页面重新编译,改动父文件即可

问题6
@tap绑定事件得不到事件源
解决方法
@tap="aaa" 方法后面不要带括号

aaa:function(event){
  console.log(event)
}

问题7
video组件的封面图闪一下就没了
模拟器上的bug
真机上OK

持续更新中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,018评论 3 119
  • 【庠恩赋】 出而入世,奋之力智。阡陌其馨,宸垣其雅。海月江舟,云鹰枥马。书山穷卷,金山探宝,人山翘首,仙山牧樵。一...
    明白的石头阅读 403评论 1 0
  • 白色的纸张上 沾满 黑色的故事 我伫立 存在于自己构勒出的梦幻天堂 多么想 沉浸入用笔触造就的婆娑绿影 但依旧不行...
    森林初青阅读 647评论 2 2
  • 年轻的女孩被纱布蒙住了双眼。他牵起女孩的手走古街,路过花店,将一把种子放在女孩手心。女孩的...
    夕颜078和春艳阅读 357评论 0 0