Skip to content

Commit 0aa55da

Browse files
committed
fix: fixed disablePageResetOnDataChangeRef dependencies
disablePageResetOnDataChangeRef will no longer trigger page resets when changed
1 parent 15778fe commit 0aa55da

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

examples/editable-data/src/App.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,17 +230,17 @@ function App() {
230230

231231
const [data, setData] = React.useState(() => makeData(20))
232232
const [originalData] = React.useState(data)
233+
const [skipPageReset, setSkipPageReset] = React.useState(false)
233234

234235
// We need to keep the table from resetting the pageIndex when we
235236
// Update data. So we can keep track of that flag with a ref.
236-
const skipPageResetRef = React.useRef(false)
237237

238238
// When our cell renderer calls updateMyData, we'll use
239239
// the rowIndex, columnID and new value to update the
240240
// original data
241241
const updateMyData = (rowIndex, columnID, value) => {
242242
// We also turn on the flag to not reset the page
243-
skipPageResetRef.current = true
243+
setSkipPageReset(true)
244244
setData(old =>
245245
old.map((row, index) => {
246246
if (index === rowIndex) {
@@ -258,7 +258,7 @@ function App() {
258258
// so that if data actually changes when we're not
259259
// editing it, the page is reset
260260
React.useEffect(() => {
261-
skipPageResetRef.current = false
261+
setSkipPageReset(false)
262262
}, [data])
263263

264264
// Let's add a data resetter/randomizer to help
@@ -272,7 +272,7 @@ function App() {
272272
columns={columns}
273273
data={data}
274274
updateMyData={updateMyData}
275-
disablePageResetOnDataChange={skipPageResetRef.current}
275+
disablePageResetOnDataChange={skipPageReset}
276276
/>
277277
</Styles>
278278
)

src/plugin-hooks/usePagination.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,15 @@ function useMain(instance) {
4949

5050
const isPageIndexMountedRef = React.useRef()
5151

52+
// Bypass any effects from firing when this changes
53+
const disablePageResetOnDataChangeRef = React.useRef()
54+
disablePageResetOnDataChangeRef.current = disablePageResetOnDataChange
55+
5256
safeUseLayoutEffect(() => {
53-
if (isPageIndexMountedRef.current && !disablePageResetOnDataChange) {
57+
if (
58+
isPageIndexMountedRef.current &&
59+
!disablePageResetOnDataChangeRef.current
60+
) {
5461
setState(
5562
old => ({
5663
...old,
@@ -60,7 +67,7 @@ function useMain(instance) {
6067
)
6168
}
6269
isPageIndexMountedRef.current = true
63-
}, [setState, rowDep, filters, groupBy, sortBy, disablePageResetOnDataChange])
70+
}, [setState, rowDep, filters, groupBy, sortBy])
6471

6572
const pageCount = manualPagination
6673
? userPageCount

0 commit comments

Comments
 (0)