javascript - window.scrollTo(0, 240) 不适用于 componentDidMount()
问题描述
我正在使用 Reactjs 和 Gatsby 构建一个网站。
我的问题是window.scrollTo(0, 240)
,componentDidMount()
如果我刷新网站,它运行良好。但是当我使用 Gatsby Link 组件时,网站并没有到设定的位置。
我还放了一个 console.log,它可以很好地查看函数是否运行。
此外,我window.scrollTo(0,240)
直接在浏览器控制台中运行它也可以正常工作。
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
期望在运行componentDidMount()
.
解决方案
componentDidMount
executes 仅适用于初始渲染,您应该使用componentDidUpdate
which 将在每次重新渲染时执行,
componentDidUpdate(){
window.scrollTo(0, 240)
}
推荐阅读
- node.js - 输入和制表符不在 req.body 中
- xaml - iOS 和 Android 中不同的 StaticResource 风格
- java - 当用 3 个字符字节编码 UTF-8 字符串时,长度如何只增加 1
- c - passing argument 1 of 'better' makes pointer from integer without a cast
- c# - How to define a retry policy for transient errors when publishing messages to RabbitMQ?
- flutter - Flutter:Sqflite 在未来的构建器上使用 snapshot.data.length 出错
- java - Java Graphics的fillRect(int, int, int, int)是如何实现的【低级图形编程】?
- java - 如何使用自定义字符串为类名添加前缀?
- ui-automation - 即使在 1.1.0 修复之后,空手道 switchpage 仍然无法正常工作
- sql - 如何使用 SQL 查找每个组的重复值?