收藏
回答

使用自定义组件生成海报,出了点问题(只有安卓机上出了)

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug 自定义组件 客户端 7.04 2.6.3

    我自己写了一个组件用来在每个商品页面中生成关于该商品的二维码海报,使用的canvas绘制,然后保存img在临时路径,用img显示给用户看,并且可以保存

    在进入页面时就加载数据,但是出现了一个问题

    在ios上和开发工具上是正常的,就是进入每个商品页面会出不同的海报,海报上有对应该商品的小程序码

    在安卓机上,进入不同商品页面,海报中商品的名称,价格都是按照这个商品的数据的,但是小程序码一直都不会变,始终是第一个商品的小程序码


怀疑的地方有两个:

    1.在退出页面时,没有清除到对应的数据

        我是在以下位置清除的,在lifetimes中detached,重置data中的内容

            lifetimes: {

                attached: function () {

                    // 在组件实例进入页面节点树时执行

                },

                detached: function () {

                    // 在组件实例被从页面节点树移除时执行

                    this.setData({

                        // 重置全部数据

                    })

                },

            },

    2.后台传给我的小程序码图片数据是base64格式的,每次我都使用的以下方法来存,名称永远是同一个,会不会是由于路径不变,所以在安卓机上一直用的之前缓存的图片

    

function savebase64Img(base64str,callback){

    console.log(base64str);

    if (base64str.indexOf('base64,')!=-1){

        let startIdx = 0;

        startIdx = base64str.indexOf('base64,') + 7;

        base64str=base64str.slice(startIdx);

    }

    const fsm = wx.getFileSystemManager();

    const FILE_BASE_NAME = 'tmp_base64src';

    const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.jpg`;

    fsm.writeFile({

        filePath,

        data: base64str,

        encoding: 'base64',

        success(){

            console.log(filePath);

            callback(filePath);

        },

        fail(err) {

            console.log(err);

            return (new Error('ERROR_BASE64SRC_WRITE'));

                callback('');

            }

        })

}


以上问题只有在安卓会复现,ios及开发工具上都为正常


最后一次编辑于  2019-06-27
回答关注问题邀请回答
收藏

1 个回答

  • 沉冰
    沉冰
    2019-06-27

    应该是第二个原因造成的,

    搞了几个小时总算改好了,

    给每个base64转图片的加了个时间戳

    然后在canvas生成海报图片后把base64的小程序码图片删除了


    2019-06-27
    赞同
    回复 3
    • 光雪健
      光雪健
      01-20
      你好,我也出现了这个问题,请问如何加时间戳和生成海报后将图片删除呢
      01-20
      回复
    • 沉冰
      沉冰
      01-20回复光雪健
      01-20
      回复
    • 光雪健
      光雪健
      01-20回复沉冰
      好的,谢谢
      01-20
      回复
登录 后发表内容