Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.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 scrollTo(0240)不使用componentDidMount()_Javascript_Reactjs_Gatsby - Fatal编程技术网

Javascript scrollTo(0240)不使用componentDidMount()

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

我正在用Reactjs和盖茨比建立一个网站

我的问题是在
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)
。这使窗口滚动,但由于延迟,它加载所有内容,然后滚动。