@@ -77,19 +77,14 @@ const FormilyEditableTableInner: React.FC<Omit<IFormilyEditableTableProps, 'name
7777 const valueLenRef = React . useRef ( valueLen ) ;
7878 valueLenRef . current = valueLen ;
7979
80- // 分页状态
81- const defaultPagination = React . useMemo ( ( ) => {
82- if ( paginationIn === false ) {
83- return { current : 1 , pageSize : 10 } ;
84- }
85- return {
86- current : paginationIn ?. current ?? 1 ,
87- pageSize : paginationIn ?. pageSize ?? 10 ,
88- } ;
89- // eslint-disable-next-line react-hooks/exhaustive-deps
90- } , [ ] ) ;
80+ // 分页状态:只取初始值,后续由 tableState 管理
81+ const defaultPaginationRef = React . useRef (
82+ paginationIn === false
83+ ? { current : 1 , pageSize : 10 }
84+ : { current : paginationIn ?. current ?? 1 , pageSize : paginationIn ?. pageSize ?? 10 } ,
85+ ) ;
9186
92- const [ tableState , setTableState ] = React . useState ( defaultPagination ) ;
87+ const [ tableState , setTableState ] = React . useState ( defaultPaginationRef . current ) ;
9388 const { current, pageSize } = tableState ;
9489
9590 React . useEffect ( ( ) => {
@@ -162,12 +157,13 @@ const FormilyEditableTableInner: React.FC<Omit<IFormilyEditableTableProps, 'name
162157 ) ;
163158 } , [ hideAdd , disableAdd , add , addButtonPosition , addButtonProps , addText ] ) ;
164159
165- // dataSource
160+ // dataSource:field.value 是 Formily 响应式对象,引用不变,用 version 触发重算
161+ const fieldRef = React . useRef ( field ) ;
162+ fieldRef . current = field ;
163+ // biome-ignore lint/correctness/useExhaustiveDependencies: version is the intentional trigger; fieldRef.current is a ref read
166164 const dataSource = React . useMemo ( ( ) => {
167- const rows = field . value || [ ] ;
165+ const rows = fieldRef . current . value || [ ] ;
168166 return rows . map ( ( item : any , index : number ) => ( { ...item , key : index } ) ) ;
169- // version 变化时重新计算
170- // eslint-disable-next-line react-hooks/exhaustive-deps
171167 } , [ version ] ) ;
172168
173169 return (
0 commit comments