|
1 |
| -import React, { useEffect, useRef, useState } from 'react'; |
| 1 | +import React, { useCallback, useEffect, useRef, useState } from 'react'; |
2 | 2 | import classNames from 'classnames';
|
3 | 3 | import { AddIcon, ChevronLeftIcon, ChevronRightIcon } from 'tdesign-icons-react';
|
4 | 4 | import { TdTabsProps, TdTabPanelProps, TabValue } from './type';
|
@@ -36,17 +36,23 @@ const TabNav: React.FC<TabNavProps> = (props) => {
|
36 | 36 |
|
37 | 37 | // :todo 兼容老版本 TabBar 的实现
|
38 | 38 | const navContainerRef = useRef<HTMLDivElement>(null);
|
39 |
| - const getIndex = (value = activeValue) => { |
40 |
| - let index = 0; |
41 |
| - itemList.forEach((v, i) => { |
42 |
| - if (v.value === value) { |
43 |
| - index = i; |
44 |
| - } |
45 |
| - }); |
46 |
| - return index; |
47 |
| - }; |
| 39 | + const getIndex = useCallback( |
| 40 | + (value) => { |
| 41 | + let index = 0; |
| 42 | + itemList.forEach((v, i) => { |
| 43 | + if (v.value === value) { |
| 44 | + index = i; |
| 45 | + } |
| 46 | + }); |
| 47 | + return index; |
| 48 | + }, |
| 49 | + [itemList], |
| 50 | + ); |
48 | 51 |
|
49 |
| - const [activeIndex, setActiveIndex] = useState(getIndex()); |
| 52 | + const [activeIndex, setActiveIndex] = useState(getIndex(activeValue)); |
| 53 | + useEffect(() => { |
| 54 | + setActiveIndex(getIndex(activeValue)); |
| 55 | + }, [activeValue, getIndex]); |
50 | 56 |
|
51 | 57 | // 判断滚动条是否需要展示
|
52 | 58 | const [isScrollVisible, setIsScrollVisible] = useState(false);
|
|
0 commit comments