react-virtualized: Calling scrollToRow() on List no longer works after updating React to v16.4.1
I 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 |
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Reactions: 8
- Comments: 20 (3 by maintainers)
Hi,
I have the same problem with the
scrollToPositionand 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
getDerivedStateFromPropshttps://github.com/bvaughn/react-virtualized/blob/c646a62eb3f7aebdfe648bb71cb87545af4d3a9b/source/Grid/Grid.js#L839-L845The
nextProps.scrollTopalways erase the new value ofprevState.scrollTopbecause it’s not anymore the previous state but the new one.I’ve made a PR which should fix this issue.
How to reproduce
I’m finely reproduced this issue. Only with MultiGrid, but the problem is the same. If you use combination of
WindowScroller,AutoSizerandList/Grid- you should get the same result.Working example. React 16.3: https://codesandbox.io/s/llq660v04l Broken after updating to React 16.4.1: https://codesandbox.io/s/1v4r4nqpz4
Change values in input with label Scroll to column or Scroll to row. In the first example it will scroll to specified column, but nothing will happen if we update React to 16.4.1 (second example)
It’s not fixed for me.
Will investigate!