详解wx.showToast

2,186 阅读2分钟

这是我参与8月更文挑战的第16天,活动详情查看:8月更文挑战

之前我们看了uniapp的showtoast方法,今天我们对比一下微信小程序提供的showToast方法。看看两者之间的区别是什么。首先我们可以看到微信在调用showToast时,跟uniapp是一样的,直接使用wx这个全局变量来调用。 我们先看一下微信提供的api属性。可以对比uniapp的参数属性。

wx.showToast(Object object)

显示消息提示框

属性类型默认值必填说明最低版本
titlestring提示的内容
iconstringsuccess图标
imagestring自定义图标的本地路径,image 的优先级高于 icon1.1.0
durationnumber1500提示的延迟时间
maskbooleanfalse是否显示透明蒙层,防止触摸穿透
successfunction接口调用成功的回调函数
failfunction接口调用失败的回调函数
completefunction接口调用结束的回调函数(调用成功、失败都会执行)

object.icon 的合法值

说明最低版本
success显示成功图标,此时 title 文本最多显示 7 个汉字长度
error显示失败图标,此时 title 文本最多显示 7 个汉字长度
loading显示加载图标,此时 title 文本最多显示 7 个汉字长度
none不显示图标,此时 title 文本最多可显示两行,1.9.0及以上版本支持

示例代码

wx.showToast({
  title: '成功',
  icon: 'success',
  duration: 2000
})

注意

  • wx.showLoading和 wx.showToast同时只能显示一个
  • wx.showToast应与 wx.hideToast配对使用

通过上述参数列表中微信与uniapp提供的showToast的参数对比。可以看出基本是一模一样,这对于我们小程序的开发者来说,当我们使用夸端开发时,在使用uniapp开发的过程中,我们可以完全可以直接使用我们日常使用的微信中的方法,只不过是咋uni的全局变量之下调用的。这一点也很方便。

然后我们看一个在截图函数里的showToast的应用:

/**
 * @param {Object} params userID streamType
 * @returns {Promise}
 */
snapshot(params) {
    return new Promise((resolve, reject) => {
        this.captureSnapshot(params)
            .then((result) => {
                wx.saveImageToPhotosAlbum({
                    filePath: result.tempImagePath,
                    success(res) {
                        wx.showToast({
                            title: '已保存到相册',
                        });
                        resolve(result);
                    },
                    fail: function (error) {
                        wx.showToast({
                            icon: 'none',
                            title: '保存失败',
                        });
                        reject(error);
                    },
                });
            })
            .catch((error) => {
                reject(error);
            });
    });
},