我正在構建一個組合網站與React,我想模仿一個典型的網站的行爲。當我點擊一個特定的項目時,我被路由到一個新的URL,但是,滾動條的位置仍然與'上一頁'頁面相同,除了第一次點擊一個項目(如果我單擊後退按鈕並單擊一個新項目,滾動條位於相同位置)。我希望窗口每次點擊一個項目時滾動到頂部。反應:window.scrollTo(0,0)在組件渲染每次
class Project extends React.Component {
render() {
let project = this.props.project;
let linkTo = "/work/" + project.id;
return (
<figure>
<img src={project.thumbnail} />
<figcaption>
<h3>{project.title}</h3>
<p>{project.type}</p>
</figcaption>
<Link to={linkTo} />
</figure>
)
}
}
export default Project;
點擊一個項目組件將路由到「work /:id」渲染ProjectDetail組件。
class ProjectDetail extends React.Component {
// componentDidMount() {
// window.scrollTo(0,0);
// }
// componentWillUpdate() {
// window.scrollTo(0,0);
// }
render() {
// window.scrollTo(0,0);
let project = PROJECTS.find((item) => item.id == this.props.params.id);
return (
<DetailMain project={project} />
)
}
}
export default ProjectDetail;
因此,每次渲染項目組件時,我都希望窗口滾動到頂部。你可以看到我一直試圖讓滾動工作。
感謝您的回覆。第一個選項部分起作用。如果我點擊一個項目,點擊'返回',但不要滾動,點擊相同或新的項目,scrollTo(0,0)不起作用。但是,如果我點擊某個項目,請點擊「返回」並在該頁面上移動,然後點擊相同或新的項目,一切正常。對此有何想法?這是因爲onUpdate沒有被調用? – user2909019
此外,第二個選項似乎工作。我添加了一個答案。 – user2909019