From 6128434e227eb0e9cc583190fb834d15f9f84121 Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 3 Jun 2021 21:48:36 +0800 Subject: [PATCH] chore: extract validateModelValue (#8807) --- src/collapse/Collapse.tsx | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/collapse/Collapse.tsx b/src/collapse/Collapse.tsx index df38cf378..991b75cd5 100644 --- a/src/collapse/Collapse.tsx +++ b/src/collapse/Collapse.tsx @@ -12,6 +12,25 @@ export type CollapseProvide = { isExpanded: (name: number | string) => boolean; }; +function validateModelValue( + modelValue: string | number | Array, + accordion: boolean +) { + if (accordion && Array.isArray(modelValue)) { + console.error( + '[Vant] Collapse: "v-model" should not be Array in accordion mode' + ); + return false; + } + if (!accordion && !Array.isArray(modelValue)) { + console.error( + '[Vant] Collapse: "v-model" should be Array in non-accordion mode' + ); + return false; + } + return true; +} + export default defineComponent({ name, @@ -55,19 +74,11 @@ export default defineComponent({ const isExpanded = (name: number | string) => { const { accordion, modelValue } = props; - if (process.env.NODE_ENV !== 'production') { - if (accordion && Array.isArray(modelValue)) { - console.error( - '[Vant] Collapse: "v-model" should not be Array in accordion mode' - ); - return false; - } - if (!accordion && !Array.isArray(modelValue)) { - console.error( - '[Vant] Collapse: "v-model" should be Array in non-accordion mode' - ); - return false; - } + if ( + process.env.NODE_ENV !== 'production' && + !validateModelValue(modelValue, accordion) + ) { + return false; } return accordion