|
1 |
| -import React, { useEffect, useState } from 'react'; |
2 |
| - |
3 |
| -const navTabs = [ |
4 |
| - { |
5 |
| - titre: "Home", |
6 |
| - url: "#home", |
7 |
| - active: "" |
8 |
| - }, |
9 |
| - { |
10 |
| - titre: "Project", |
11 |
| - url: "#project", |
12 |
| - active: "" |
13 |
| - }, |
14 |
| - { |
15 |
| - titre: "Lab", |
16 |
| - url: "#lab", |
17 |
| - active: "" |
18 |
| - }, |
19 |
| - { |
20 |
| - titre: "Blog", |
21 |
| - url: "#blog", |
22 |
| - active: "" |
23 |
| - }, |
24 |
| - { |
25 |
| - titre: "Photos", |
26 |
| - url: "#photos", |
27 |
| - active: "" |
28 |
| - }, |
29 |
| - { |
30 |
| - titre: "About", |
31 |
| - url: "#about", |
32 |
| - active: "" |
33 |
| - } |
34 |
| -] |
| 1 | +import { useStickySliderNav } from '../hooks/useStickySliderNav'; |
35 | 2 |
|
36 | 3 | export default function Navigation() {
|
37 |
| - const [isNavSticky, setIsNavSticky] = useState(false); |
38 |
| - const [activeTab, setActiveTab] = useState(0); |
39 |
| - |
40 |
| - useEffect(() => { |
41 |
| - const navSticky = document.getElementById('js-nav-sticky'); |
42 |
| - // const navTabs = document.querySelectorAll('.js-nav-tab'); |
43 |
| - const sliders = document.querySelectorAll('.js-slider'); |
44 |
| - const sticky = navSticky.offsetTop; |
45 |
| - |
46 |
| - const navStickyHandler = () => { |
47 |
| - setIsNavSticky(window.scrollY >= sticky); |
48 |
| - |
49 |
| - for (let i = sliders.length - 1; i >= 0; i--) { |
50 |
| - if (window.scrollY + 50 >= sliders[i].offsetTop) { |
51 |
| - setActiveTab(i); |
52 |
| - break; |
53 |
| - } |
54 |
| - } |
55 |
| - }; |
56 |
| - |
57 |
| - window.addEventListener('scroll', navStickyHandler); |
| 4 | + const { isNavSticky, isActiveTab, navTabs } = useStickySliderNav(); |
58 | 5 |
|
59 |
| - return () => { |
60 |
| - window.removeEventListener('scroll', navStickyHandler); |
61 |
| - }; |
62 |
| - }, []); |
63 | 6 | return (
|
64 | 7 | <nav id="js-nav-sticky" className={`nav ${isNavSticky ? 'nav-sticky' : ''}`}>
|
65 |
| - {navTabs.map((tab, index) => ( |
| 8 | + {navTabs.map((navTab, index) => ( |
66 | 9 | <a
|
67 | 10 | key={index}
|
68 |
| - className={`nav-tab js-nav-tab ${activeTab === index ? 'active' : ''}`} |
69 |
| - href={tab.url}>{tab.titre}</a> |
| 11 | + className={`nav-tab js-nav-tab ${isActiveTab === index ? 'active' : ''}`} |
| 12 | + href={navTab.url} |
| 13 | + > |
| 14 | + {navTab.titre} |
| 15 | + </a> |
70 | 16 |
|
71 | 17 | ))}
|
72 | 18 | </nav>
|
|
0 commit comments