Small performance enhancements for the infinite list
- avoid re-render if the scroll distance hasn't changed much
- try to avoid creating new functions at several levels, to avoid creating garbage objects that need to be gc'd later
- modernize code to use react refs