From 4fd2a765c4de5eea98bb595e902a286ad1f9ce6b Mon Sep 17 00:00:00 2001 From: worldSaySorry Date: Fri, 3 Dec 2021 12:01:30 +0800 Subject: [PATCH] fix: picker reset index (#99) (#102) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 解决Picker切换选项后无法重置的问题 [#99] --- packages/vantui/src/picker/index.tsx | 16 ++++++++-------- packages/vantui/types/picker.d.ts | 6 +----- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/packages/vantui/src/picker/index.tsx b/packages/vantui/src/picker/index.tsx index 28dea7d4b..c310a3243 100644 --- a/packages/vantui/src/picker/index.tsx +++ b/packages/vantui/src/picker/index.tsx @@ -42,6 +42,7 @@ const Picker = forwardRef(function Index( } = props const children = useRef>([]) + const handleIndex = useRef(-1) useEffect( function () { @@ -58,6 +59,7 @@ const Picker = forwardRef(function Index( if (typeof event === 'number' || !type) { if (onChange) { const event_ = {} + handleIndex.current = event Object.defineProperties(event_, { detail: { value: { @@ -133,11 +135,8 @@ const Picker = forwardRef(function Index( [columns], ) - const setColumnValues = useCallback(function ( - index, - options, - needReset = false, - ) { + const setColumnValues = useCallback(function (index, options) { + if (index <= handleIndex.current) return const column = children.current[index] if (column == null) { return Promise.reject(new Error('setColumnValues: 对应列不存在')) @@ -147,15 +146,16 @@ const Picker = forwardRef(function Index( if (isSame) { return Promise.resolve() } + const cIndex = column.getCurrentIndex() return column.set({ options }).then(() => { - if (needReset) { + if (cIndex > options.length) { setTimeout(() => { column.setIndex(0) + handleIndex.current = -1 }) } }) - }, - []) + }, []) const getValues = useCallback(function () { return children.current.map((child) => child.getValue()) diff --git a/packages/vantui/types/picker.d.ts b/packages/vantui/types/picker.d.ts index 038213eff..234aad4df 100644 --- a/packages/vantui/types/picker.d.ts +++ b/packages/vantui/types/picker.d.ts @@ -109,11 +109,7 @@ export type IPickerInstance = { /** * @description 设置每一列的值 */ - setColumnValues: ( - index: number, - options: string[], - needReset: boolean, - ) => Promise + setColumnValues: (index: number, options: string[]) => Promise /** * @description 获取每一列的值 * @default