收藏
回答

小程序组件uploader带有的误导性函数命名?

在官方文档中对于uploader的示范代码如下

Page({
    data: {
        files: [{
            url: 'http://mmbiz.qpic.cn/mmbiz_png/VUIF3v9blLsicfV8ysC76e9fZzWgy8YJ2bQO58p43Lib8ncGXmuyibLY7O3hia8sWv25KCibQb7MbJW3Q7xibNzfRN7A/0',
        }, {
            loading: true
        }, {
            error: true
        }]
    },
    onLoad() {
        this.setData({
            selectFile: this.selectFile.bind(this),
            uplaodFile: this.uplaodFile.bind(this)
        })
    },
    chooseImage: function (e) {
        var that = this;
        wx.chooseImage({
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
            success: function (res) {
                // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
                that.setData({
                    files: that.data.files.concat(res.tempFilePaths)
                });
            }
        })
    },
    previewImage: function(e){
        wx.previewImage({
            current: e.currentTarget.id, // 当前显示图片的http链接
            urls: this.data.files // 需要预览的图片http链接列表
        })
    },
    selectFile(files) {
        console.log('files', files)
        // 返回false可以阻止某次文件上传
    },

这里的uploadfile和云开发wx.cloud.uploadFile有歧义,实际上这里的作用仅仅是将图片添加到界面中进行预览,而并不是上传到后台。倘若将上传逻辑放到这里,将会导致刚添加就传到后台数据库中,这极大的造成了理解上的混淆和不便。建议可以在这里修改一下函数名,可以改为renew这类的词汇。

    uplaodFile(files) {
        console.log('upload files', files)
        // 文件上传的函数,返回一个promise
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                reject('some error')
            }, 1000)
        })
    },
    uploadError(e) {
        console.log('upload error', e.detail)
    },
    uploadSuccess(e) {
        console.log('upload success', e.detail)
    }
});

回答关注问题邀请回答
收藏

1 个回答

  • 时之砂
    时之砂
    发表于移动端
    2020-07-27
    自己改吧 本身拿过来也不能用
    2020-07-27
    有用
    回复 1
    • LǒngLóng
      LǒngLóng
      2020-07-28
      就是光看文档 这里真的有点误导性。在这里面的upload的逻辑实际上是完成image的在界面上的rerender的功能。和与开发中cloud.uploadFile重名,就让人觉得有点矛盾。可能多新手(我
      )不太友好orz
      2020-07-28
      回复
登录 后发表内容
问题标签