lanjianrong пре 4 година
родитељ
комит
62969d272d
1 измењених фајлова са 20 додато и 8 уклоњено
  1. 20 8
      src/components/Table/src/BasicTable.tsx

+ 20 - 8
src/components/Table/src/BasicTable.tsx

@@ -1,6 +1,6 @@
 /* eslint-disable react-hooks/rules-of-hooks */
 /* eslint-disable no-param-reassign */
-import React, { useRef, useState, useMemo, useCallback } from 'react'
+import React, { useRef, useState, useMemo, useCallback, useLayoutEffect } from 'react'
 import PermSelect from '@/pages/Customer/Company/components/PermSelect'
 import { TABLE_COLUMNS_MAP, ColumnStateEnum } from '@/utils/cache/cacheEnum'
 import { isBoolean, isMobile, isNullOrUnDef, isObject, isUnDef } from '@/utils/is'
@@ -36,6 +36,8 @@ const BasicTable: {
   onSizeChange,
   bordered,
   rowSelection,
+  dataSource,
+  onLoad,
   ...resetProps
 }) => {
   const {
@@ -54,7 +56,7 @@ const BasicTable: {
     sizeRef: 'middle',
     columnsStateMap: columnsStateMap,
     params: { staffIds: defaultStaffIds, dataPermission: defaultPermAuthCache },
-    dataSource: null
+    dataSource
   })
 
   const columnsRef = useMemo(() => {
@@ -78,11 +80,11 @@ const BasicTable: {
     paginationRef: !isBoolean(resetProps.pagination)
   })
 
-  useUpdateLayoutEffect(() => {
-    if (state.dataSource || !isUnDef(resetProps.dataSource)) {
-      redoHeight(state.dataSource || resetProps.dataSource)
-    }
-  }, [state.dataSource, resetProps.dataSource])
+  useLayoutEffect(() => {
+    console.log('11')
+
+    state.dataSource && redoHeight(state.dataSource)
+  }, [state.dataSource])
 
   /** 增加头部 */
   if (mainMenuType) {
@@ -148,6 +150,7 @@ const BasicTable: {
   const computedParams = mainMenuType ? { ...params, ...state.params } : params
 
   const _request = useCallback(async (_params, _sort, _filter) => {
+    if (isUnDef(request)) return undefined
     const result = await request(_params, _sort, _filter)
     if (!isBoolean(result?.success)) {
       result.success = true
@@ -156,11 +159,20 @@ const BasicTable: {
     return result
   }, [])
 
+  const _onLoad = useCallback(_dataSource => {
+    onLoad?.(_dataSource)
+    // TODO: 使用[request]api才对dataSource进行赋值, 规避掉手动设置[dataSource] api 自适应高度失效
+    if (!isUnDef(request)) {
+      setState({ ...state, dataSource: _dataSource })
+    }
+  }, [])
+
   return (
     <React.StrictMode>
       <div ref={tableElRef} className={styles.BasicTable}>
         <ProTable
           {...resetProps}
+          dataSource={state.dataSource}
           rowKey={rowKey || 'id'}
           columns={originalColumns}
           params={computedParams}
@@ -171,7 +183,7 @@ const BasicTable: {
             onChange: handleOnColumnsChange
           }}
           bordered={isNullOrUnDef(bordered) ? bordered : true}
-          onLoad={dataSource => setState({ ...state, dataSource })}
+          onLoad={_onLoad}
           onSizeChange={handleOnSizeChange}
           rowSelection={rowSelectionOptions}
         />