Я создал небольшое репозиторий Github, где вы можете посмотреть: https://github.com/tudorgergely/jquery-plugin-nextjs/
Вот рабочая демонстрация: https://jquery-plugin-nextjs.now.sh/
В основном вам нужна пара вещей: сначала используйте динамический c без ssr для рендеринга компонента jquery -diamonds:
const DynamicJqueryDiamonds = dynamic(
() => import('../components/JqueryDiamonds'),
{ loading: () => <p>...</p>, ssr: false }
);
Затем внутри этого компонента загрузите jquery / diamonds в componentDidMount / useEffect:
useEffect(() => {
window.jQuery = require('../public/jquery-latest.min');
window.Diamonds = require('../public/jquery.diamonds.js');
window.jQuery("#demo").diamonds({
size : 100, // Size of diamonds in pixels. Both width and height.
gap : 5, // Pixels between each square.
hideIncompleteRow : false, // Hide last row if there are not enough items to fill it completely.
autoRedraw : true, // Auto redraw diamonds when it detects resizing.
itemSelector : `.${styles.item}` // the css selector to use to select diamonds-items.
});
}, []);
и, наконец, не забудьте указать свои css внутри страниц / индекса. js:
например:
export default function Index() {
return (
<div>
<Head>
<title>Test</title>
<link href="/diamonds.css" rel="stylesheet" key="test"/>
</Head>
<DynamicJqueryDiamonds/>
</div>
);
}