@@ -46,65 +46,70 @@ export default function MonitorComp({
4646 defaultParams : [ queryScope ] ,
4747 } ) ;
4848
49- // 生成tab列表和内容
50- const { tabList, contentList } = useMemo ( ( ) => {
51- const tabs =
49+ // 生成tab列表
50+ const tabList = useMemo ( ( ) => {
51+ return (
5252 allMetrics ?. map ( ( container : any , index : number ) => ( {
5353 key : index . toString ( ) ,
5454 label : container ?. name ,
55- } ) ) || [ ] ;
55+ } ) ) || [ ]
56+ ) ;
57+ } , [ allMetrics ] ) ;
5658
57- const contents : Record < string , React . ReactNode > = { } ;
59+ // 生成当前激活tab的内容
60+ const currentTabContent = useMemo ( ( ) => {
61+ const currentContainer = allMetrics ?. [ parseInt ( activeTabKey ) ] ;
62+ if ( ! currentContainer ) return null ;
5863
59- allMetrics ?. forEach ( ( container : any , index : number ) => {
60- contents [ index . toString ( ) ] = (
61- < div className = { styles . monitorContainer } >
62- { container ?. metricGroups ?. map (
63- ( graphContainer : any , graphIdx : number ) => (
64- < Card className = { styles . monitorItem } key = { graphIdx } >
65- < div className = { styles . graphHeader } >
66- < IconTip
67- tip = { graphContainer . description }
68- style = { { fontSize : 16 } }
69- content = {
70- < span className = { styles . graphHeaderText } >
71- { graphContainer . name }
72- { graphContainer . metrics [ 0 ] ?. unit &&
73- `(${ graphContainer . metrics [ 0 ] . unit } ${
74- ( graphContainer . metrics [ 0 ] . unit && type ) ===
75- 'OVERVIEW'
76- ? ','
77- : ''
78- } ${
79- type === 'OVERVIEW'
80- ? graphContainer . metrics [ 0 ] . key
81- : ''
82- } )`}
83- </ span >
84- }
85- />
86- </ div >
87- < LineGraph
88- id = { `monitor-${ graphContainer . name . replace ( / \s + / g, '' ) } ` }
89- isRefresh = { isRefresh }
90- queryRange = { queryRange }
91- metrics = { graphContainer . metrics }
92- labels = { filterLabel }
93- groupLabels = { groupLabels }
94- type = { type }
95- useFor = { useFor }
96- filterData = { filterData }
97- filterQueryMetric = { filterQueryMetric }
64+ return (
65+ < div className = { styles . monitorContainer } >
66+ { currentContainer ?. metricGroups ?. map (
67+ ( graphContainer : any , graphIdx : number ) => (
68+ < Card className = { styles . monitorItem } key = { graphIdx } >
69+ < div className = { styles . graphHeader } >
70+ < IconTip
71+ tip = { graphContainer . description }
72+ style = { { fontSize : 16 } }
73+ content = {
74+ < span className = { styles . graphHeaderText } >
75+ { graphContainer . name }
76+ { graphContainer . metrics [ 0 ] ?. unit &&
77+ `(${ graphContainer . metrics [ 0 ] . unit } ${
78+ ( graphContainer . metrics [ 0 ] . unit && type ) ===
79+ 'OVERVIEW'
80+ ? ','
81+ : ''
82+ } ${
83+ type === 'OVERVIEW'
84+ ? graphContainer . metrics [ 0 ] . key
85+ : ''
86+ } )`}
87+ </ span >
88+ }
9889 />
99- </ Card >
100- ) ,
101- ) }
102- </ div >
103- ) ;
104- } ) ;
105-
106- return { tabList : tabs , contentList : contents } ;
90+ </ div >
91+ < LineGraph
92+ id = { `monitor-${ activeTabKey } -${ graphContainer . name . replace (
93+ / \s + / g,
94+ '' ,
95+ ) } `}
96+ isRefresh = { isRefresh }
97+ queryRange = { queryRange }
98+ metrics = { graphContainer . metrics }
99+ labels = { filterLabel }
100+ groupLabels = { groupLabels }
101+ type = { type }
102+ useFor = { useFor }
103+ filterData = { filterData }
104+ filterQueryMetric = { filterQueryMetric }
105+ />
106+ </ Card >
107+ ) ,
108+ ) }
109+ </ div >
110+ ) ;
107111 } , [
112+ activeTabKey ,
108113 allMetrics ,
109114 isRefresh ,
110115 queryRange ,
@@ -125,7 +130,7 @@ export default function MonitorComp({
125130 activeTabKey = { activeTabKey }
126131 onTabChange = { ( key ) => setActiveTabKey ( key ) }
127132 >
128- { contentList [ activeTabKey ] || (
133+ { currentTabContent || (
129134 < div style = { { padding : 20 , textAlign : 'center' , color : '#999' } } >
130135 暂无数据
131136 </ div >
0 commit comments