diff --git a/packages/vantui/src/toast/README.md b/packages/vantui/src/toast/README.md index 6432e90c..7fea7320 100644 --- a/packages/vantui/src/toast/README.md +++ b/packages/vantui/src/toast/README.md @@ -77,7 +77,7 @@ Toast.show({ | fail | 展示失败提示 | _  (
    options:
      ¦ ToastProps
      ¦ string
  ) => any
_ | - | `true` | | clear | 关闭提示 | _  (
    options?: ToastProps
  ) => void
_ | - | `true` | | setDefaultOptions | 修改默认配置,对所有 Toast 生效。传入 type 可以修改指定类型的默认配置 | _  (
    options: ToastProps
  ) => void
_ | - | `true` | -| resetDefaultOptions | 重置默认配置,对所有 Toast 生效。传入 type 可以重置指定类型的默认配置 | _  (
    options: any
  ) => void
_ | - | `true` | +| resetDefaultOptions | 重置默认配置,对所有 Toast 生效。 | _  () => void
_ | - | `true` | | createOnlyToast | 获取唯一的 toast 组件,不需要手动设置 id 和 selector | _  () => FunctionComponent &
    toastProps
_ | - | `true` | ### 样式变量 diff --git a/packages/vantui/src/toast/events.tsx b/packages/vantui/src/toast/events.tsx index 5b3663b1..d5f93069 100644 --- a/packages/vantui/src/toast/events.tsx +++ b/packages/vantui/src/toast/events.tsx @@ -1,3 +1,4 @@ +import _assign from 'lodash/assign' import { ToastProps } from '../../types/toast' import VanOverlay from '../overlay/index' import { createExtraNode, ExtraNode } from '../wxs/extra-node' @@ -9,6 +10,20 @@ const defaultDuration = 2500 let timer: NodeJS.Timeout | null = null let hasMask = false +const defaultToastOptions: ToastProps = { + duration: 2500, +} + +let _defaultOptions = { ...defaultToastOptions } + +export function setDefaultOptions(options: ToastProps) { + _assign(_defaultOptions, options) +} + +export function resetDefaultOptions() { + _defaultOptions = { ...defaultToastOptions } +} + export function show_(options: ToastProps) { if (timer) { clearTimeout(timer) @@ -24,12 +39,12 @@ export function show_(options: ToastProps) { >, ) } - extraNode.renderNode?.() + extraNode.renderNode?.() if (options.duration !== 0) { timer = setTimeout(() => { clear() options?.onClose?.() - }, options.duration || defaultDuration) + }, options.duration || _defaultOptions?.duration || defaultDuration) } } diff --git a/packages/vantui/src/toast/index.tsx b/packages/vantui/src/toast/index.tsx index 313657b1..cc2246bd 100644 --- a/packages/vantui/src/toast/index.tsx +++ b/packages/vantui/src/toast/index.tsx @@ -1,6 +1,14 @@ import { ToastProps } from '../../types/toast' import { createOnlyToast } from './create-only-toast' -import { success, loading, fail, clear, show } from './events' +import { + success, + loading, + fail, + clear, + show, + setDefaultOptions, + resetDefaultOptions, +} from './events' // @ts-ignore // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -13,6 +21,8 @@ Toast.loading = loading Toast.fail = fail Toast.clear = clear Toast.show = show +Toast.setDefaultOptions = setDefaultOptions +Toast.resetDefaultOptions = resetDefaultOptions Toast.createOnlyToast = () => createOnlyToast(Toast) export { Toast } diff --git a/packages/vantui/types/toast.d.ts b/packages/vantui/types/toast.d.ts index 61931189..ddea961a 100644 --- a/packages/vantui/types/toast.d.ts +++ b/packages/vantui/types/toast.d.ts @@ -89,9 +89,9 @@ export interface toastProps { */ setDefaultOptions: (options: ToastProps) => void /** - * @description 重置默认配置,对所有 Toast 生效。传入 type 可以重置指定类型的默认配置 + * @description 重置默认配置,对所有 Toast 生效。 */ - resetDefaultOptions: (options: any) => void + resetDefaultOptions: () => void /** * @description 获取唯一的toast组件,不需要手动设置id和selector */