Reactjs 如何在重新渲染之前保存滚动位置并将滚动位置设置为保存的位置-React JS

Reactjs 如何在重新渲染之前保存滚动位置并将滚动位置设置为保存的位置-React JS,reactjs,scroll,react-hooks,Reactjs,Scroll,React Hooks,我在React JS中有一个功能组件。我需要在每次重新渲染之前保存滚动位置,并将滚动设置为上一个位置 export function Calender(props) { const [scrollPosition, setScrollPosition] = useState([0, 0]); const handleClick = ()=> { setScrollPosition([window.screenX,window.ScreenY])

我在React JS中有一个功能组件。我需要在每次重新渲染之前保存滚动位置,并将滚动设置为上一个位置

export function Calender(props) {
    const [scrollPosition, setScrollPosition] = useState([0, 0]);
    const handleClick = ()=> {
        setScrollPosition([window.screenX,window.ScreenY])
        //api call happens and props get changed which causes a rerender
    }

    useEffect( ()=>{
        window.scrollTo(scrollPosition[0],scrollPosition[1])
    })

    return (
       <div >
           <button onClick={()=>{handleClick}} >Click</button>
        </div>
    );
}
导出功能日历(道具){
常量[scrollPosition,setScrollPosition]=useState([0,0]);
常量handleClick=()=>{
setScrollPosition([window.screenX,window.ScreenY])
//api调用发生,道具被更改,从而导致重新播放
}
useffect(()=>{
scrollTo(scrollPosition[0],scrollPosition[1])
})
返回(
{handleClick}}>单击
);
}

他不适合我。如何执行此操作?

滚动到。。。在哪里或什么地方?获取当前的滚动高度非常简单,任何针对“javascript获取滚动位置”的Web搜索都会告诉您如何做到这一点。设置当前的滚动位置同样简单,所以感觉好像你还没有真正搜索到如何做呢?我必须将当前的屏幕位置保存在我所在的位置。在api调用组件重新呈现之后。然后屏幕位置设置为顶部。但我必须把它设为之前的位置。是的,还有?保存滚动位置,然后触发重新渲染器,然后作为渲染后行为的一部分,将滚动位置设置为保存的滚动位置,然后清除保存的值。屏幕中未设置滚动位置。这就是问题所在。我实际上是在使用这个代码useffect(()=>{window.scrollTo(prevX,prevY)})谢谢。看起来您正在存储screenX/screenY,而不是scrollX/scrollY。