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
*/