Calling scrollToRow() on List no longer works after updating React to v16.4.1
See original GitHub issueI have a fairly complicated app where this issue is occurring, so it is not so easy to include a simple example showing the problem. Essentially what I am doing is calling
this._pdfView.getWrappedInstance().list.scrollToRow(index);
where this._pdfView
is a ref to a connected component (hence the getWrappedInstance()
call), which in turn has a getter to access the ref to a List
component. I use a combination of WindowScroller
, AutoSizer
and List
. Important to note is that this is an issue specifically with React v16.4.1. If I revert to React v16.3.0 everything works like expected.
If this information is not sufficient, I will try to attach a minimal example that reproduces the problem. I understand that otherwise it will be difficult for you to track down the problem.
What is the current behavior?
Calling scrollToRow()
no longer scrolls to the right row. In fact, it doesn’t seem to be doing anything anymore.
What is the expected behavior?
It should scroll to the row given by the index.
Which versions of React and react-virtualized, and which browser / OS are affected by this issue? Did this work in previous versions of react-virtualized?
Browser | Chrome v67 |
OS | OSX 10.13.6 |
React | 16.4.1 |
React DOM | 16.4.1 |
react-virtualized | 9.20.1 |
Issue Analytics
- State:
- Created 5 years ago
- Reactions:8
- Comments:20 (3 by maintainers)
Top GitHub Comments
Hi,
I have the same problem with the
scrollToPosition
and React 16.4.Here is what I have found: A bug fix has been done on React 16.4 on the
getDerivedStateFromProps
, see https://reactjs.org/blog/2018/05/23/react-v-16-4.html#bugfix-for-getderivedstatefrompropsThe important part is:
Here is the code from React Virtualized Grid in the
getDerivedStateFromProps
https://github.com/bvaughn/react-virtualized/blob/c646a62eb3f7aebdfe648bb71cb87545af4d3a9b/source/Grid/Grid.js#L839-L845The
nextProps.scrollTop
always erase the new value ofprevState.scrollTop
because it’s not anymore the previous state but the new one.I’ve made a PR which should fix this issue.