mirror of
https://gitee.com/vant-contrib/vant-weapp.git
synced 2025-04-06 03:58:05 +08:00
[Improvement] Toast: 新增默认配置设置 (#229)
* toast 增强 * 补充文档 && 补充示例 * reset 参数说明
This commit is contained in:
parent
8b15d95153
commit
5189d37578
@ -4,10 +4,11 @@ Page({
|
|||||||
data: {},
|
data: {},
|
||||||
|
|
||||||
showToast() {
|
showToast() {
|
||||||
Toast({
|
Toast.setDefaultOptions({
|
||||||
message: 'toast的内容',
|
|
||||||
selector: '#zan-toast-test'
|
selector: '#zan-toast-test'
|
||||||
})
|
});
|
||||||
|
|
||||||
|
Toast('toast的内容');
|
||||||
},
|
},
|
||||||
|
|
||||||
showIconToast() {
|
showIconToast() {
|
||||||
|
@ -42,6 +42,8 @@ Toast.loading({
|
|||||||
| Toast | `options`, `timeout` | - | 展示提示 |
|
| Toast | `options`, `timeout` | - | 展示提示 |
|
||||||
| Toast.loading | `options` | - | 展示加载提示 |
|
| Toast.loading | `options` | - | 展示加载提示 |
|
||||||
| Toast.clear | - | - | 关闭提示 |
|
| Toast.clear | - | - | 关闭提示 |
|
||||||
|
| Toast.setDefaultOptions | `options` 格式同 Toast 函数可以传入的参数, `type` 可选 global/page, 分别指定对整个小程序生效/对当前页面生效 | - | 修改默认配置,对所有 Toast 生效 |
|
||||||
|
| Toast.resetDefaultOptions | `type` 可选 global/page | - | 重置默认配置,对所有 Toast 生效 |
|
||||||
|
|
||||||
#### options 具体参数如下
|
#### options 具体参数如下
|
||||||
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|
| 参数 | 说明 | 类型 | 默认值 | 可选值 |
|
||||||
|
@ -1,15 +1,47 @@
|
|||||||
|
const TOAST_CONFIG_KEY = 'zanui.__zanToastPageConfig';
|
||||||
|
|
||||||
let timeoutData = {
|
let timeoutData = {
|
||||||
timeoutId: 0,
|
timeoutId: 0,
|
||||||
toastCtx: null
|
toastCtx: null
|
||||||
};
|
};
|
||||||
|
|
||||||
function Toast(options = {}, pageCtx) {
|
let globalToastUserConfig = {};
|
||||||
|
|
||||||
|
// 获取页面上下文
|
||||||
|
function getPageCtx(pageCtx) {
|
||||||
let ctx = pageCtx;
|
let ctx = pageCtx;
|
||||||
|
|
||||||
if (!ctx) {
|
if (!ctx) {
|
||||||
const pages = getCurrentPages();
|
const pages = getCurrentPages();
|
||||||
ctx = pages[pages.length - 1];
|
ctx = pages[pages.length - 1];
|
||||||
}
|
}
|
||||||
const toastCtx = ctx.selectComponent(options.selector);
|
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取当前页面的 toast 配置数据
|
||||||
|
function getPageToastConfig(pageCtx) {
|
||||||
|
const zanuiData = pageCtx.data.zanui || {};
|
||||||
|
return zanuiData.__zanToastPageConfig || {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toast 显示函数
|
||||||
|
function Toast(optionsOrMsg, pageCtx) {
|
||||||
|
// 参数格式化处理
|
||||||
|
// 如果是文字,默认为 message
|
||||||
|
let options = optionsOrMsg || {};
|
||||||
|
if (typeof optionsOrMsg === 'string') {
|
||||||
|
options = { message: optionsOrMsg };
|
||||||
|
}
|
||||||
|
|
||||||
|
let ctx = getPageCtx(pageCtx);
|
||||||
|
const pageToastUserSetting = getPageToastConfig(ctx);
|
||||||
|
const parsedOptions = {
|
||||||
|
...globalToastUserConfig,
|
||||||
|
...pageToastUserSetting,
|
||||||
|
...options
|
||||||
|
};
|
||||||
|
const toastCtx = ctx.selectComponent(parsedOptions.selector);
|
||||||
|
|
||||||
if (!toastCtx) {
|
if (!toastCtx) {
|
||||||
console.error('无法找到对应的toast组件,请于页面中注册并在 wxml 中声明 toast 自定义组件');
|
console.error('无法找到对应的toast组件,请于页面中注册并在 wxml 中声明 toast 自定义组件');
|
||||||
@ -21,13 +53,13 @@ function Toast(options = {}, pageCtx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
toastCtx.show({
|
toastCtx.show({
|
||||||
...options,
|
...parsedOptions,
|
||||||
show: true
|
show: true
|
||||||
});
|
});
|
||||||
|
|
||||||
const timeoutId = setTimeout(() => {
|
const timeoutId = setTimeout(() => {
|
||||||
toastCtx.clear();
|
toastCtx.clear();
|
||||||
}, options.timeout || 3000);
|
}, parsedOptions.timeout || 3000);
|
||||||
|
|
||||||
timeoutData = {
|
timeoutData = {
|
||||||
timeoutId,
|
timeoutId,
|
||||||
@ -35,6 +67,40 @@ function Toast(options = {}, pageCtx) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 设置 toast 基础属性
|
||||||
|
Toast.setDefaultOptions = function (options = {}, type = 'page') {
|
||||||
|
const parsedDefaultOptions = {
|
||||||
|
selector: options.selector || '',
|
||||||
|
type: options.type || '',
|
||||||
|
icon: options.icon || '',
|
||||||
|
image: options.image || '',
|
||||||
|
timeout: options.timeout || 3000
|
||||||
|
};
|
||||||
|
|
||||||
|
if (type === 'global') {
|
||||||
|
globalToastUserConfig = {
|
||||||
|
...parsedDefaultOptions
|
||||||
|
};
|
||||||
|
} else if (type === 'page') {
|
||||||
|
let ctx = getPageCtx();
|
||||||
|
ctx.setData({
|
||||||
|
[`${TOAST_CONFIG_KEY}`]: parsedDefaultOptions
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 重置 toast 基础属性
|
||||||
|
Toast.resetDefaultOptions = function (type = 'page') {
|
||||||
|
if (type === 'global') {
|
||||||
|
globalToastUserConfig = {};
|
||||||
|
} else {
|
||||||
|
let ctx = getPageCtx();
|
||||||
|
ctx.setData({
|
||||||
|
[`${TOAST_CONFIG_KEY}`]: {}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
// 清理所有 toast
|
// 清理所有 toast
|
||||||
Toast.clear = function () {
|
Toast.clear = function () {
|
||||||
clearTimeout(timeoutData.timeoutId);
|
clearTimeout(timeoutData.timeoutId);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user