我想要一个标题,其中包含从外部源(data.js)呈现的链接,然后当单击它生成的链接时,文档将滚动到具有相同 ID 的 div(在单独的组件中)名称作为链接。
当我将渲染中的名称传递给辅助方法时,我只能让它向下滚动大约 2 厘米,然后它就停止了。但是,当我制作一个只有一个按钮可以滚动到某个部分的单独组件时,它可以工作;或者,如果我手动将部分输入到函数中,它将滚动到正确的部分,但是当我将部分从呈现的链接传递到函数中时,它不起作用。我不知道我做错了什么。
这是来自 Data.js 的部分
export const sections = [`About`, `Contact`, `Tools`, `Projects`];
这是我的标题代码
import React from 'react';
// (Removed Styled Components Import Statements) //
import { sections } from './Data';
class Header extends React.Component {
renderSections() {
return sections.map((section) => {
let sect = section.toString();
return (
<HeadLi>
<HeadLink id={section} onClick={() => this.scrollToSection(sect)}>
{section}
</HeadLink>
</HeadLi>
);
});
}
scrollToSection = (s) => {
let elm;
elm = document.getElementById(s);
如果我将其更改为
elm = document.getElementById('About);
它工作正常,但不适用于传入的值
elm.scrollIntoView({
behavior: 'smooth',
block: 'start',
inline: 'nearest',
});
};
render() {
return (
<HeadCon>
<HeadImg src={icon} show="none" />
<Name className="myName">John Lennon</Name>
<Container>
<Branding>
<BrandH1>
<HighlightSpan>John Lennon</HighlightSpan> Singer
</BrandH1>
</Branding>
<HeadNav>
<UL>{this.renderSections()}</UL>
</HeadNav>
</Container>
</HeadCon>
);
}
}
export default Header;
这是我的另一个组件(每个部分的开头都有一个 div,其 id 等于部分,就像我说的,如果我手动输入部分,那么一切正常。
class Contact extends React.Component {
render() {
return (
<ContactCon id="Contact"> // This is a styled.div
....
....
....
请帮我。谢谢