Почему не работает onScroll [РЕШЕНО]

Если использовать onWheel то работает

const Root = () => {
 
  const [ ok, setOk ] = useState ( false );

  const ScrollEl = ( props ) => (
    <ScrollWrapper display={ props.display }>
      <h1>Hello</h1>
    </ScrollWrapper>
  );


  const handleWheel = async () => {

    if ( pageYOffset >= 250 ) {
      await setOk ( true );
      return console.log ( ok );
    } else {
      await setOk ( false );
      return console.log ( ok );
    }
  };

  return (
    <Layout onScroll={ handleWheel }>
      <Header headerCategory={ headerCategory } headerArticles={ headerArticles } />
      <Suspense fallback='loading'>
      </Suspense>
      <React.Suspense fallback="Root content suspense">
        <MainContentWrapper >
          <ScrollEl display={ ok ? 'flex' : 'none' } />
          <Switch>
            <Route exact path="/">
              <Redirect to="/prams" />
            </Route>
            <Route path="/prams" component={ lazy ( 'Prams' ) } />
            <Route path="/map" component={ lazy ( 'Map' ) } />
          </Switch>
        </MainContentWrapper>
      </React.Suspense>
    </Layout>
  );
};

export default Root;


Ответы (2 шт):

Автор решения: Август
  • событие wheel срабатывает всегда, даже если документу некуда скроллиться. оно будет работать даже в пустом документе

  • событие scroll срабатывает тогда, когда элемент документа (на который повешено событие scroll) проскроллилось (хотя бы на 1px вверх или 1px вниз). соответственно, если этому элементу негде скроллиться - то и событие не сработает.

к сожалению, без полноценного взгляда на сайт здесь невозможно сказать что именно мешает скроллу

→ Ссылка
Автор решения: Slavick

Добавил height: 100% от html body вниз по дереву к соему сколл элементу

→ Ссылка