Skip to content

Commit 15945d2

Browse files
committed
Always keep track of internal state regardless of controlled props, but allow prop overrides
1 parent eaa7215 commit 15945d2

File tree

3 files changed

+19
-42
lines changed

3 files changed

+19
-42
lines changed

docs/yarn.lock

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4510,6 +4510,10 @@ react-dom@^15.5.4:
45104510
object-assign "^4.1.0"
45114511
prop-types "~15.5.7"
45124512

4513+
react-fastclick@^3.0.1:
4514+
version "3.0.1"
4515+
resolved "https://registry.yarnpkg.com/react-fastclick/-/react-fastclick-3.0.1.tgz#e438f9a63cad77c0bb61bb7fa4fd6668451ed83d"
4516+
45134517
react-html-attributes@^1.3.0:
45144518
version "1.3.0"
45154519
resolved "https://registry.yarnpkg.com/react-html-attributes/-/react-html-attributes-1.3.0.tgz#c97896e9cac47ad9c4e6618b835029a826f5d28c"
@@ -4580,15 +4584,16 @@ react-scripts@0.9.5:
45804584
optionalDependencies:
45814585
fsevents "1.0.17"
45824586

4583-
react-story@^0.0.3:
4584-
version "0.0.3"
4585-
resolved "https://registry.yarnpkg.com/react-story/-/react-story-0.0.3.tgz#abb01ddff286466f99f47764d422b1488a656ab3"
4587+
react-story@^0.0.6:
4588+
version "0.0.6"
4589+
resolved "https://registry.yarnpkg.com/react-story/-/react-story-0.0.6.tgz#ec3e6b42e5edab8a74dd581c12bd321ec304eaba"
45864590
dependencies:
45874591
classnames "^2.2.5"
45884592
glamor "^2.20.25"
45894593
glamorous "^3.14.0"
45904594
javascript-detect-element-resize "^0.5.3"
45914595
raf "^3.3.2"
4596+
react-fastclick "^3.0.1"
45924597
react-router-dom next
45934598

45944599
react@^15.5.4:

src/index.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -509,15 +509,11 @@ export default class ReactTable extends Methods(Lifecycle(Component)) {
509509
} else {
510510
newExpanded = _.set(newExpanded, cellInfo.nestingPath, {})
511511
}
512-
if (onExpandedChange) {
513-
onExpandedChange(newExpanded, cellInfo.nestingPath, e)
514-
}
515-
// If expanded is being controlled, don't manage internal state
516-
if (this.props.expanded) {
517-
return
518-
}
512+
519513
return this.setStateWithData({
520514
expanded: newExpanded
515+
}, () => {
516+
onExpandedChange && onExpandedChange(newExpanded, cellInfo.nestingPath, e)
521517
})
522518
}
523519

src/methods.js

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -403,17 +403,13 @@ export default Base => class extends Base {
403403
// User actions
404404
onPageChange (page) {
405405
const {onPageChange, collapseOnPageChange} = this.props
406-
onPageChange && onPageChange(page)
407-
// If controlled, do not keep track of state
408-
if (typeof this.props.page !== 'undefined') {
409-
this.fireFetchData()
410-
return
411-
}
406+
412407
const newState = {page}
413408
if (collapseOnPageChange) {
414409
newState.expanded = {}
415410
}
416411
this.setStateWithData(newState, () => {
412+
onPageChange && onPageChange(page)
417413
this.fireFetchData()
418414
})
419415
}
@@ -426,16 +422,11 @@ export default Base => class extends Base {
426422
const currentRow = pageSize * page
427423
const newPage = Math.floor(currentRow / newPageSize)
428424

429-
onPageSizeChange && onPageSizeChange(newPageSize, newPage)
430-
if (typeof this.props.page !== 'undefined') {
431-
this.fireFetchData()
432-
return
433-
}
434-
435425
this.setStateWithData({
436426
pageSize: newPageSize,
437427
page: newPage
438428
}, () => {
429+
onPageSizeChange && onPageSizeChange(newPageSize, newPage)
439430
this.fireFetchData()
440431
})
441432
}
@@ -528,16 +519,12 @@ export default Base => class extends Base {
528519
}
529520
}
530521
}
531-
// If controlled, do not keep track of state
532-
onSortedChange && onSortedChange(newSorted, column, additive)
533-
if (typeof this.props.sorted !== 'undefined') {
534-
this.fireFetchData()
535-
return
536-
}
522+
537523
this.setStateWithData({
538524
page: ((!sorted.length && newSorted.length) || !additive) ? 0 : this.state.page,
539525
sorted: newSorted
540526
}, () => {
527+
onSortedChange && onSortedChange(newSorted, column, additive)
541528
this.fireFetchData()
542529
})
543530
}
@@ -560,17 +547,10 @@ export default Base => class extends Base {
560547
})
561548
}
562549

563-
onFilteredChange && onFilteredChange(newFiltering, column, value)
564-
565-
// If filters is being controlled, do not manage state internally
566-
if (this.props.filtered) {
567-
this.fireFetchData()
568-
return
569-
}
570-
571550
this.setStateWithData({
572551
filtered: newFiltering
573552
}, () => {
553+
onFilteredChange && onFilteredChange(newFiltering, column, value)
574554
this.fireFetchData()
575555
})
576556
}
@@ -653,14 +633,10 @@ export default Base => class extends Base {
653633
value: newWidth
654634
})
655635

656-
onResizedChange && onResizedChange(newResized, event)
657-
658-
if (this.props.resized) {
659-
return
660-
}
661-
662636
this.setStateWithData({
663637
resized: newResized
638+
}, () => {
639+
onResizedChange && onResizedChange(newResized, event)
664640
})
665641
}
666642
}

0 commit comments

Comments
 (0)