Мой обычный jquery-код отлично работает в реакции.
Когда я пытаюсь выполнить этот отлично работающий jquery-код в реакции, он просто не работает.
1) Navigation.js
import React, { Component } from 'react';
import $ from 'jquery';
import './Navigation.scss';
class nav extends Component {
componentDidMount = () => {
// Hide Header on on scroll down
var didScroll;
var lastScrollTop = 0;
var delta = 5;
var navbarHeight = $('header').outerHeight();
$(window).scroll(function(event){
didScroll = true;
});
setInterval(function() {
if (didScroll) {
hasScrolled();
didScroll = false;
}
}, 250);
function hasScrolled() {
var st = $(this).scrollTop();
// Make sure they scroll more than delta
if(Math.abs(lastScrollTop - st) <= delta) {
return;
}
// If they scrolled down and are past the navbar, add class .nav-up.
// This is necessary so you never see what is "behind" the navbar.
if (st > lastScrollTop && st > navbarHeight){
// Scroll Down
$("header").removeClass("nav-down").addClass("nav-up");
} else {
// Scroll Up
if(st + $(window).height() < $(document).height()) {
$("header").removeClass("nav-up").addClass("nav-down");
}
}
lastScrollTop = st;
}
}
render() {
return (
<header className="fixed-top">
<nav id="small-top-nav" className="nav navbar navbar-expand-lg nav-down">
/* ALL LINKS CODE */
</nav>
</header>
);
}
export default nav;
2) Navigation.scss
.nav-up {
top: -2.5rem;
}
.nav-down {
down: 2.5rem;
}
Я пробовал этот код jquery в обычном загрузчике и работает нормально.
Вы также можете найти этот рабочий код jquery здесь на коде.