I want to use a few plugins on my website which is done completely with react. The issue is I don't understand how to run it in a react component without just turning the screen black. I've tried methods online which I could understand but they didn't work.
For example I want to use dropotron on my navigation bar
import React from 'react';
import ReactDOM from 'react-dom';
import {BrowserRouter, Route, Switch, Link, NavLink} from 'react-router-dom';
import BookModal from './modals/BookModal';
import UserInfoModal from './modals/UserInfoModal';
import GroupReservationModal from './modals/GroupReservationModal';
import ThankYouModal from './modals/ThankYouModal';
import $ from 'jquery';
class Header extends React.Component {
constructor(props){
super(props);
this.state ={
showModal: false,
showUserInfoModal: false,
showGroupReservationModal: false,
showThankYouModal: false
};
this.openModal = this.openModal.bind(this);
this.exitModal = this.exitModal.bind(this);
this.switchModalUserInfo = this.switchModalUserInfo.bind(this);
this.switchModalGroupReservation = this.switchModalGroupReservation.bind(this);
this.switchModalThankYou = this.switchModalThankYou.bind(this);
}
componentDidMount(){
$('#nav > ul').dropotron({
alignment: 'left',
hideDelay: 350,
mode: 'slide'
});
}
//omitted some functions
render(){
return (
//JSX i want to apply dropotron to
<div>
<header id="header" >
<nav id="nav">
<ul>
<li>
<a><span className="icon fa-angle-down"></span> Experiences</a>
<ul>
<li><a href="/experience1">Experience1</a></li>
<li><a href="/experience2">Experience2</a></li>
</ul>
</li>
<li>
<a><span className="icon fa-angle-down"></span> More</a>
<ul>
<li><a href="/contact">Contact</a></li>
<li><a href="/franchise">Franchise</a></li>
<li><a href="/gift">Gift Card</a></li>
</ul>
</li>
<li>
<a
id="navbar-book"
onClick={this.openModal}
href="#"
className="book-button">
<span onClick={this.openModal} >Book Now</span>
</a>
</li>
<li className="special">
<a href="#menu" className="menuToggle" ><span>Menu</span></a>
</li>
</ul>
</nav>
</header>
</div>
)
}
};
export default Header;
I copy pasted the plugin in component did mount but it doesn't do anything except make the screen go black. I have also tried creating a seperate function and calling it from componentDidMount.
There's a lot of jquery plugins that I want to use but I just don't understand how they can be implemented with react in general.
My file hierarchy is as follows:
Index
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>asfasfd</title>
<link rel="icon" type="image/png" href="/images/favicon.png">
</head>
<body>
<div id="app"></div>
<script src ="/bundle.js"></script>
</body>
</html>
App.js
import React from 'react';
import ReactDOM from 'react-dom';
import AppRouter from './routers/AppRouter';
import 'normalize.css/normalize.css';
import './css/bundle.css';
import './css/modal.css';
import Footer from './components/Footer'
ReactDOM.render(<AppRouter />,document.getElementById('app'));
Approuter just uses react-router dom to load the pages which are their own components.
I've never used jquery before and just learned react so using them together is confusing. Any answers or directions towards some more useful resources would be appreciated.