Javascript scrollTo(0240)不使用componentDidMount()
我正在用Reactjs和盖茨比建立一个网站 我的问题是在Javascript scrollTo(0240)不使用componentDidMount(),javascript,reactjs,gatsby,Javascript,Reactjs,Gatsby,我正在用Reactjs和盖茨比建立一个网站 我的问题是在componentDidMount()中有window.scroll到(0240),如果我刷新站点,它会正常工作。但是,当我使用盖茨比链接组件时,网站不会转到设置的位置 我还放了一个console.log,可以很好地查看函数是否运行 此外,我还直接在浏览器控制台中运行了窗口。scrollTo(0240),效果也很好 import React, { Component} from 'react' import HeroHeader from
componentDidMount()
中有window.scroll到(0240)
,如果我刷新站点,它会正常工作。但是,当我使用盖茨比链接组件时,网站不会转到设置的位置
我还放了一个console.log,可以很好地查看函数是否运行
此外,我还直接在浏览器控制台中运行了窗口。scrollTo(0240)
,效果也很好
import React, { Component} from 'react'
import HeroHeader from "../components/HeroHeader"
import NavBar from "../components/NavBar"
import TopFooter from "../components/TopFooter"
import BottomFooter from "../components/BottomFooter"
import MainContent from "../components/MainContent"
class WebPage extends Component {
componentDidMount() {
window.scrollTo(0, 240)
console.log("Webpage Mounted")
}
render() {
// window.scrollTo(0, 240)
return(
<>
<HeroHeader />
<NavBar />
<MainContent>
{this.props.children}
</MainContent>
<TopFooter />
<BottomFooter />
</>
)
}
}
export default WebPage
import React,{Component}来自“React”
从“./组件/HeroHeader”导入HeroHeader
从“./组件/NavBar”导入NavBar
从“./组件/TopFooter”导入TopFooter
从“./组件/底部页脚”导入底部页脚
从“./components/MainContent”导入MainContent
类网页扩展组件{
componentDidMount(){
滚动到(0240)
console.log(“已装入网页”)
}
render(){
//滚动到(0240)
返回(
{this.props.children}
)
}
}
导出默认网页
如果希望在运行
componentDidMount()
componentDidMount
仅在初始渲染时执行works,则应使用componentdiddupdate
,它将在每次重新渲染时执行
componentDidUpdate(){
window.scrollTo(0, 240)
}
发现可以禁用
窗口。使用以下指南滚动(0,0)
显然内置于盖茨比中:
安装转换插件:
npm安装——保存纱线添加盖茨比插件转换盖茨比插件布局react spring react dom
(实际上不确定仅仅禁用自动滚动实际上需要多少个)
在gatsby browser.js
中使用此代码:
exports.shouldUpdateScroll = () => {
return false;
};
我已经试过了,当我换页面的时候,还是什么都没有。但我看到我的
console.log(“网页挂载”)
和console.log(“网页更新”)
出现。这意味着当您更改页面并返回此页面时,它不会触发?是的,它不会触发-仅在第一次进入网站时。在网站上点击时,每次“页面”(一个新的网页组件被加载)被更改时都应该执行窗口。滚动到(0240)
。在我使用窗口时发现。滚动到组件更新()
中的(0240)
。当我输入某种形式或它执行的东西时……不要认为我可以重新创建代码,因为它依赖于盖茨比,盖茨比在后台做很多事情。但是我尝试过使用setTimeout(函数(){window.scrollTo(0240)},100)
。这使窗口滚动,但由于延迟,它加载所有内容,然后滚动。