|
1 | 1 | import _ from 'lodash'; |
2 | | -import React, { useState, useEffect } from 'react'; |
| 2 | +import React, { useState, useEffect, useMemo } from 'react'; |
3 | 3 | import { connect } from 'react-redux'; |
4 | 4 |
|
5 | 5 | import Layout from './containers/Layout'; |
@@ -38,17 +38,21 @@ const ReduxDatatable = ({ config = {}, reducerName, tableData = {}, action, thun |
38 | 38 | columns: [ visibleColumnIds, setVisibleColumnIds ], |
39 | 39 | editing: [ isEditing, setIsEditing ], |
40 | 40 | printing: [ isPrinting, setIsPrinting ], |
41 | | - paginationProps: calculatePaginationProps(tableData.query, config.components.Limiter.default || 10), |
42 | 41 | minWidth, |
43 | 42 | state, |
44 | 43 | scroller: [ scrollData, setScrollData ], |
45 | 44 | width: [ tableWidth, setTableWidth ], |
46 | | - visibleColumns: visibleColumnIds.reduce((result, currentIndex) => { |
47 | | - const { [currentIndex]: column } = columns; |
48 | | - return [ ...result, column ]; |
49 | | - }, []) |
| 45 | + paginationProps: useMemo(() => ( |
| 46 | + calculatePaginationProps(tableData.query, config.components.Limiter.default || 10) |
| 47 | + ), [ tableData.query ]), |
| 48 | + visibleColumns: useMemo(() => ( |
| 49 | + visibleColumnIds.reduce((result, currentIndex) => { |
| 50 | + const { [currentIndex]: column } = columns; |
| 51 | + return [ ...result, column ]; |
| 52 | + }, []) |
| 53 | + ), [ visibleColumnIds ]) |
50 | 54 | }; |
51 | | - |
| 55 | + |
52 | 56 | // Fetch data and populate table on first load. |
53 | 57 | useEffect(() => { |
54 | 58 | loadData(); |
|
0 commit comments