diff --git a/packages/runtime-core/src/components/Suspense.ts b/packages/runtime-core/src/components/Suspense.ts index 6ccca1e26b8..2862178758f 100644 --- a/packages/runtime-core/src/components/Suspense.ts +++ b/packages/runtime-core/src/components/Suspense.ts @@ -423,7 +423,7 @@ function createSuspenseBoundary( o: { parentNode, remove } } = rendererInternals - const timeout = toNumber(vnode.props && vnode.props.timeout) + const timeout = vnode.props ? toNumber(vnode.props.timeout) : undefined if (__DEV__) { assertNumber(timeout, `Suspense timeout`) } diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index 5c1629d5bc4..e3fcd86627b 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -163,10 +163,11 @@ export const looseToNumber = (val: any): any => { } /** + * Only conerces number-like strings * "123-foo" will be returned as-is */ export const toNumber = (val: any): any => { - const n = Number(val) + const n = isString(val) ? Number(val) : NaN return isNaN(n) ? val : n }