Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript GoToTop按钮在后续使用中不起作用_Javascript_Reactjs_Setinterval_React Hooks_Clearinterval - Fatal编程技术网

Javascript GoToTop按钮在后续使用中不起作用

Javascript GoToTop按钮在后续使用中不起作用,javascript,reactjs,setinterval,react-hooks,clearinterval,Javascript,Reactjs,Setinterval,React Hooks,Clearinterval,我有一个组件可以将页面滚动到顶部。按钮第一次工作,但如果我尝试再次向下滚动,它就不工作了。请告知 const GoToTop = (props) => { const [intervalId, setIntervalId] = useState(0); const scrollStep = () => { if (window.pageYOffset === 0) { clearInt

我有一个组件可以将页面滚动到顶部。按钮第一次工作,但如果我尝试再次向下滚动,它就不工作了。请告知

    const GoToTop = (props) => {

        const [intervalId, setIntervalId] = useState(0);

        const scrollStep = () => {
            if (window.pageYOffset === 0) {
                clearInterval(intervalId);
            }
            window.scroll(0, window.pageYOffset - props.scrollStepInPx);
            setIntervalId(0);
        };

        const scrollToTop = () => {
            setIntervalId(setInterval(scrollStep, props.delayInMs));
        };

        return (
            <button
                title='Back to top'
                type='button'
                className='scroll'
                aria-label='Back to top'
                onClick={scrollToTop}>
                <span>
                    <FontAwesomeIcon
                        icon='angle-up'
                        width='1em'
                        className='arrow-up'
                    /></span>
            </button>
        );
    };

    GoToTop.defaultProps = {
        scrollStepInPx: 50,
        delayInMs: 16.66
    };
const GoToTop=(道具)=>{
const[intervalId,setIntervalId]=useState(0);
常量滚动步骤=()=>{
如果(window.pageYOffset==0){
clearInterval(intervalId);
}
window.scroll(0,window.pageYOffset-props.scrollStepInPx);
setIntervalId(0);
};
常量scrollToTop=()=>{
setIntervalId(setInterval(scrollStep,props.delayInMs));
};
返回(
);
};
GoToTop.defaultProps={
滚动步进X:50,
延迟毫秒:16.66
};

不确定您是真的想延迟滚动到顶部,还是只想快速滚动到顶部,但您可以尝试拨打电话

window.scroll({
 top: 0, 
 left: 0, 
 behavior: 'smooth' 
});
还有你的代码

const GoToTop = (props) => {

    const scrollToTop = () => {
        window.scroll({
            top: 0, 
            left: 0, 
            behavior: 'smooth' 
        });
    };

    return (
        <button
            title='Back to top'
            type='button'
            className='scroll'
            aria-label='Back to top'
            onClick={scrollToTop}>
            <span>
                <FontAwesomeIcon
                    icon='angle-up'
                    width='1em'
                    className='arrow-up'
                /></span>
        </button>
    );
};
const GoToTop=(道具)=>{
常量scrollToTop=()=>{
滚动窗口({
排名:0,
左:0,,
行为:“平滑”
});
};
返回(
);
};

有控制台错误吗?我甚至第一次都不能让它工作。OP第一次用一个答案中的位更新它时,它就工作了,而这个答案使它不能工作work@TJ添加回旧代码。抱歉搞混了。这是如何解决该组件只在第一次工作这一事实的?@Vencovsky甚至没有上升@a2441918打开您的控制台并试用,因为stackblitz在另一个窗口中,它可能不在work@a2441918对我来说,你的例子真是太棒了,伙计。现在可以了。谢谢你知道为什么我的实现不起作用吗?