如何在没有 react-router 路由器的情况下将 active class 添加到 React/Preact 应用程序中的特定部分
How to add active class to particular section in React/ Preact application without react-router router
我正在开发 preact/react 没有路由功能的应用程序。我们使用特定部分的 id 滚动或单击 link 导航到特定部分。
我知道使用 react-router 我可以使用 NavLink 标签添加活动 class。但是我想在我的情况下具有相同的功能,并且还需要具有滚动间谍功能以便在我滚动到特定部分时更改样式。
示例代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<ul>
<li style='display:inline'><a href="#firstSection">Section1</a></li>
<li style='display:inline'><a href="#secondSection">Section2</a></li>
<li style='display:inline'><a href="#thirdSection">Section3</a></li>
</ul>
<section id='firstSection' style="margin: 300px;">
This is first section.
</section>
<section id='secondSection' style="margin: 300px;">
This is Second section.
</section>
<section id='thirdSection' style="margin: 300px;">
This is Third section.
</section>
</body>
</html>
如果需要更多信息,请告诉我。
我将永远感谢你们的帮助。
您可以在 window 上观察 hashchange
事件,并在回调中将活动 class 设置为 link,href 与 window.location.hash
匹配。您可以在此处阅读有关 hashchange
活动的更多信息:
https://developer.mozilla.org/en-US/docs/Web/Events/hashchange
您想像这样定位元素的 onClick 事件
className={ this.props.isActive ? 'navigation--active': '' }
onClick={ this.props.onActiveTab }
摘自这个相关问题的片段
我通过 javascript 使用 Bootstrap Scrollspy 插件实现了该功能。下面的代码完美运行
$('body').scrollspy({ target: '#navbar-example' })
并在所有 li 标签中添加 data-target="#id-of-section-you-want-to-spy"。
这是参考 link Bootstrap.
我正在开发 preact/react 没有路由功能的应用程序。我们使用特定部分的 id 滚动或单击 link 导航到特定部分。
我知道使用 react-router 我可以使用 NavLink 标签添加活动 class。但是我想在我的情况下具有相同的功能,并且还需要具有滚动间谍功能以便在我滚动到特定部分时更改样式。
示例代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<ul>
<li style='display:inline'><a href="#firstSection">Section1</a></li>
<li style='display:inline'><a href="#secondSection">Section2</a></li>
<li style='display:inline'><a href="#thirdSection">Section3</a></li>
</ul>
<section id='firstSection' style="margin: 300px;">
This is first section.
</section>
<section id='secondSection' style="margin: 300px;">
This is Second section.
</section>
<section id='thirdSection' style="margin: 300px;">
This is Third section.
</section>
</body>
</html>
如果需要更多信息,请告诉我。
我将永远感谢你们的帮助。
您可以在 window 上观察 hashchange
事件,并在回调中将活动 class 设置为 link,href 与 window.location.hash
匹配。您可以在此处阅读有关 hashchange
活动的更多信息:
https://developer.mozilla.org/en-US/docs/Web/Events/hashchange
您想像这样定位元素的 onClick 事件
className={ this.props.isActive ? 'navigation--active': '' }
onClick={ this.props.onActiveTab }
摘自这个相关问题的片段
我通过 javascript 使用 Bootstrap Scrollspy 插件实现了该功能。下面的代码完美运行
$('body').scrollspy({ target: '#navbar-example' })
并在所有 li 标签中添加 data-target="#id-of-section-you-want-to-spy"。
这是参考 link Bootstrap.