Использование WOW.js с Next.js | Кодементор

Или любую библиотеку, которая использует объект «окно», если уж на то пошло.

Ты знаешь о WOW.js? Это потрясающая библиотека, созданная Мэтт Деллак который служит для анимации вещей при прокрутке (наиболее распространенный случай использования: вы прокручиваете страницу вниз, и какой-то компонент исчезает или перемещается на экран).

Его очень просто использовать: импортируйте библиотеку, добавьте имена классов в разметку, которую хотите анимировать, и инициализируйте WOW в своем коде javascript!.

Проблема в том, что… это не так просто, когда вы выполняете рендеринг на стороне сервера с помощью Next.js. Причина в том, что WOW.js использует объект «окно» вашего браузера для работы, а на первом рендеринге вашей страницы нет объекта «окно»! … потому что это делается на сервере!

Итак, вот как я заработал:

1. Установите «wow.js» через npm

> npm add wow.js

Импортируйте animate.css в компонент Head вашего _document.js или Layout HOC.

import Head from 'next/head'
... 
<Head> 
  <title>My Proyect</title> 
  <link rel="stylesheet" href=" 
</Head>

3. Выполните его и оживите!

По сути, нам нужно, чтобы WOW.js выполнялся только на стороне клиента. Мы можем инициализировать его на HOC ( нет _document.js) или компонент, содержащий анимированную разметку.

const isServer = typeof window === 'undefined'
const WOW = !isServer ? require('wow.js') : null 

export default class MyComponent extends React.Component { 
  componentDidMount() { 
    new WOW().init() 
  } 
  
  render() { 
    return ( 
      <h2 className={"wow fadeInUp"}>I'm animated!</h2> 
    ) 
  }
}

Круто, да?

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *