#javascript #jquery #reactjs #next.js #bxslider
Вопрос:
Я пытаюсь добавить внешний bxslider js в свой проект nextjs. Все идет хорошо, кроме этого дела. Я добавил bxslider.js в head.tsx и он успешно добавлен в DOM, но когда я использую эту переменную bxsliderjs в файле /pages/index.tsx, она выдает мне эту ошибку.
error ReferenceError: bxSlider is not defined
Может ли кто-нибудь сообщить мне, где я делаю что-то не так или как правильно использовать внешний js.
В /компоненте/head.tsx
import NextHead from 'next/head';
import { useRouter } from 'next/router';
import React from 'react';
import { MetaProps } from '../types/layout';
const Head = ({ customMeta }: { customMeta?: MetaProps }): JSX.Element => {
const router = useRouter();
const meta: MetaProps = {
title: 'Test'
};
return (
<NextHead>
<title>{meta.title}</title>
<meta content={meta.description} name="description" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script type="text/javascript" src="/js/bxslider.min.js"></script>
</NextHead>
);
};
export default Head;
В /компоненте/макет.tsx
import React, { useState, useEffect } from 'react';
import { MetaProps } from '../types/layout';
import Link from 'next/link';
import Head from './Head';
import $ from "jquery";
import Navigation from './Navigation';
const Layout = ({ customMeta}: LayoutProps): JSX.Element => {
const dispatch = useDispatch();
const router = useRouter();
useEffect(() => {
})
return (
<>
<Head customMeta={customMeta} />
<header>
<div className="funeral-header esse-header">
<div className="container">
Text
</div>
</div>
</header>
<main>
{children}
</main>
</>
);
};
export default Layout;
И В pages/index.tsx
import React, { Component, useEffect } from 'react';
import Layout from "components/Layout";
import $ from "jquery";
const Index = ({ props}) => {
useEffect(() => {
$('.bxslider').bxSlider({
auto: true,
autoControls: true
});
}, [])
return (
<Layout>
<div className="bxslider">
<div><img src="https://cdn.vox-cdn.com/image1.jpg"/></div>
<div><img src="https://cdn.vox-cdn.com/image2.jpg"/></div>
<div><img src="https://cdn.vox-cdn.com/image3.jpg"/></div>
<div><img src="https://cdn.vox-cdn.com/image4.jpg"/></div>
<div><img src="https://cdn.vox-cdn.com/image5.jpg"/></div>
</div>
</Layout>
)
}
export default Index;
Заранее большое спасибо
Комментарии:
1. Не имеет отношения к проблеме, но я настоятельно рекомендую вам не использовать jQuery с Next.js/React.
2. Спасибо за ответ, но не могли бы вы, пожалуйста, дать мне знать, как я могу это исправить