diff --git a/src/tabs/TabsContent.tsx b/src/tabs/TabsContent.tsx index 1b2ed8105..3ebd4066a 100644 --- a/src/tabs/TabsContent.tsx +++ b/src/tabs/TabsContent.tsx @@ -1,4 +1,4 @@ -import { ref, watch } from 'vue'; +import { ref, watch, onMounted } from 'vue'; import { createNamespace } from '../utils'; import Swipe from '../swipe'; @@ -7,7 +7,6 @@ const [createComponent, bem] = createNamespace('tabs'); export default createComponent({ props: { inited: Boolean, - duration: [Number, String], animated: Boolean, swipeable: Boolean, lazyRender: Boolean, @@ -15,6 +14,10 @@ export default createComponent({ type: Number, required: true, }, + duration: { + type: [Number, String], + required: true, + }, currentIndex: { type: Number, required: true, @@ -39,7 +42,7 @@ export default createComponent({ ref={swipeRef} loop={false} class={bem('track')} - duration={props.duration} + duration={+props.duration * 1000} touchable={props.swipeable} lazyRender={props.lazyRender} showIndicators={false} @@ -53,15 +56,18 @@ export default createComponent({ return Content; }; - watch( - () => props.currentIndex, - (index) => { - const swipe = swipeRef.value; - if (swipe && swipe.state.active !== index) { - swipe.swipeTo(index, { immediate: !props.inited }); - } + const swipeToCurrentTab = (index: number) => { + const swipe = swipeRef.value; + if (swipe && swipe.state.active !== index) { + swipe.swipeTo(index, { immediate: !props.inited }); } - ); + }; + + watch(() => props.currentIndex, swipeToCurrentTab); + + onMounted(() => { + swipeToCurrentTab(props.currentIndex); + }); return () => (