0

外部ソース (data.js) からレンダリングされたリンクを含むヘッダーが必要です。生成されたリンクをクリックすると、ドキュメントは同じ ID を持つ div (別のコンポーネント内) にスクロールします。リンクとしての名前。

render からヘルパー メソッドに名前を渡すと、約 2cm しか下にスクロールできず、停止します。ただし、セクションにスクロールするためのボタンのみを持つ別のコンポーネントを作成すると、これは機能します。または、セクションを関数に手動で入力すると、正しいセクションにスクロールしますが、レンダリングされたリンクから関数にセクションを渡すと、機能しません。何が間違っているのかわかりません。

ここに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;

ここに私の他のコンポーネントがあります(各セクションには、最初にセクションと同じIDを持つdivがあり、前述のように、セクションを手動で入力すると、すべて正常に機能します.

class Contact extends React.Component {
    render() {
        return (
            <ContactCon id="Contact"> // This is a styled.div
....
....
....

私を助けてください。ありがとう

4

1 に答える 1

0

HeadLink では<a></a>、属性を持つタグを使用しhref="#Contact"ます。

于 2020-05-12T10:31:57.340 に答える