From 92f17f02023f74a930ac2d63de000f40afb920c7 Mon Sep 17 00:00:00 2001 From: "kongjing@dian.so" Date: Thu, 9 Jun 2022 18:23:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20value=E8=AE=BE=E7=BD=AE=E9=A1=BB?= =?UTF-8?q?=E6=99=9A=E4=BA=8Eoptions=20=EF=BC=88#246=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/vantui-demo/package.json | 1 + packages/vantui-demo/yarn.lock | 5 +++++ packages/vantui-doc/src/datetime-picker/README.md | 2 +- packages/vantui/src/datetime-picker/index.tsx | 10 +++++++--- packages/vantui/src/picker-column/index.tsx | 7 ++++++- packages/vantui/src/picker/index.tsx | 8 +++++--- 6 files changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/vantui-demo/package.json b/packages/vantui-demo/package.json index 426b3a2b6..a3099cd24 100644 --- a/packages/vantui-demo/package.json +++ b/packages/vantui-demo/package.json @@ -142,6 +142,7 @@ "@vant/area-data": "^1.1.3", "@vant/icons": "^1.7.1", "core-js": "^3.15.2", + "preact": "^10.7.3", "react": "^17.0.0", "react-dom": "^17.0.0" }, diff --git a/packages/vantui-demo/yarn.lock b/packages/vantui-demo/yarn.lock index 6efc782a1..201571ecb 100644 --- a/packages/vantui-demo/yarn.lock +++ b/packages/vantui-demo/yarn.lock @@ -10609,6 +10609,11 @@ postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.2 picocolors "^0.2.1" source-map "^0.6.1" +preact@^10.7.3: + version "10.7.3" + resolved "https://registry.npmmirror.com/preact/-/preact-10.7.3.tgz#f98c09a29cb8dbb22e5fc824a1edcc377fc42b5a" + integrity sha512-giqJXP8VbtA1tyGa3f1n9wiN7PrHtONrDyE3T+ifjr/tTkg+2N4d/6sjC9WyJKv8wM7rOYDveqy5ZoFmYlwo4w== + preferred-pm@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/preferred-pm/-/preferred-pm-1.0.1.tgz#539df37ce944b1b765ae944a8ba34a7e68694e8d" diff --git a/packages/vantui-doc/src/datetime-picker/README.md b/packages/vantui-doc/src/datetime-picker/README.md index 5ffb6ff4f..e689dbdad 100644 --- a/packages/vantui-doc/src/datetime-picker/README.md +++ b/packages/vantui-doc/src/datetime-picker/README.md @@ -24,7 +24,7 @@ function Demo() { minHour: 10, maxHour: 20, minDate: new Date(2009, 10, 1).getTime(), - maxDate: new Date(2011, 10, 1).getTime(), + maxDate: new Date(2031, 10, 1).getTime(), currentDate: new Date().getTime(), }) diff --git a/packages/vantui/src/datetime-picker/index.tsx b/packages/vantui/src/datetime-picker/index.tsx index d9ab9dcf5..e3bf1305b 100644 --- a/packages/vantui/src/datetime-picker/index.tsx +++ b/packages/vantui/src/datetime-picker/index.tsx @@ -8,6 +8,7 @@ import { useImperativeHandle, ForwardedRef, } from 'react' +import { nextTick } from '@tarojs/taro' import { IPickerInstance, PickerChangeEvents, @@ -222,14 +223,17 @@ export function DatetimePicker( ) } } - setInnerValue(value) updateColumns(value) + nextTick(() => { + setInnerValue(value) + }) + return new Promise((resolve) => { - setTimeout(() => { + nextTick(() => { picker.setValues(values) resolve(`${value}`) - }, 16) + }) }) }, [formatter, getPicker, type, updateColumns], diff --git a/packages/vantui/src/picker-column/index.tsx b/packages/vantui/src/picker-column/index.tsx index 7e68836f7..8240917bb 100644 --- a/packages/vantui/src/picker-column/index.tsx +++ b/packages/vantui/src/picker-column/index.tsx @@ -7,6 +7,7 @@ import { memo, } from 'react' import { View, CustomWrapper } from '@tarojs/components' +import { nextTick } from '@tarojs/taro' import * as utils from '../wxs/utils' import { PickerColumnProps } from '../../types/picker-column' import { range } from '../common/utils' @@ -72,7 +73,11 @@ function Index( if (index !== currentIndex) { setCurrentIndex(index) setOffset(offset) - if (onChange && userAction) onChange(curColIndex) + if (onChange && userAction) { + nextTick(() => { + onChange(curColIndex) + }) + } return } return setOffset(offset) diff --git a/packages/vantui/src/picker/index.tsx b/packages/vantui/src/picker/index.tsx index 55127b15a..b9d411263 100644 --- a/packages/vantui/src/picker/index.tsx +++ b/packages/vantui/src/picker/index.tsx @@ -1,10 +1,10 @@ /* eslint-disable react-hooks/exhaustive-deps */ import { - useEffect, useCallback, useRef, forwardRef, useImperativeHandle, + useLayoutEffect, } from 'react' import { View } from '@tarojs/components' import { @@ -44,7 +44,7 @@ const Picker = forwardRef(function Index( const children = useRef>([]) const handleIndex = useRef(-1) - useEffect( + useLayoutEffect( function () { if (Array.isArray(children) && children.length) { setColumns().catch(() => {}) @@ -158,7 +158,9 @@ const Picker = forwardRef(function Index( }, []) const getValues = useCallback(function () { - return children.current.map((child) => child.getValue()) + return children.current.map((child) => { + return child.getValue() + }) }, []) const getIndexes = useCallback(function () {