StructureBuilder / react-keep-alive

A component that maintains component state and avoids repeated re-rendering.
MIT License
981 stars 105 forks source link

hooks 中组件离开时,无法获取deactive组件的滚动距离 #117

Open SupermanWY opened 3 years ago

SupermanWY commented 3 years ago

const useRestoreScrollTop = (scrollElOrFn) => {
  const scrollTopRef = useRef(null)

  useKeepAliveEffect(() => {
    console.log('scrollTopRef', scrollTopRef)
    const scrollEl = typeof scrollElOrFn === 'function' ? scrollElOrFn() : scrollElOrFn
    if (scrollTopRef.current === null) {
      scrollEl.scrollTop = scrollTopRef.current
    }

    return () => {
      console.log(scrollEl.scrollTop)
      scrollTopRef.current = scrollEl.scrollTop
    }
  })
}

return 的函数中实际获取的是刚进入的组件的scrollTop,并非刚离开组件的 scrollTop。