javascript - 如何在 React 中使用 jQuery 插件
问题描述
我想在我的网站上使用一些插件,这些插件完全由 react 完成。问题是我不明白如何在不使屏幕变黑的情况下在反应组件中运行它。我在网上尝试了我能理解的方法,但没有奏效。
例如,我想在导航栏上使用 dropotron
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;
我复制粘贴了组件中的插件确实安装了,但它除了让屏幕变黑之外什么也没做。我也尝试过创建一个单独的函数并从 componentDidMount 调用它。
我想使用很多 jquery 插件,但我只是不明白它们是如何通过一般反应来实现的。
我的文件层次结构如下:
指数
<!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>
应用程序.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 只是使用 react-router dom 来加载作为它们自己组件的页面。
我以前从未使用过 jquery,只是学习了 react,因此将它们一起使用会令人困惑。对于一些更有用的资源的任何答案或方向将不胜感激。
解决方案
您首先必须通过 npm 添加 jquery,例如:
npm i jquery --save
然后在您的组件中使用 Jquery 作为
import $ from 'jquery';
推荐阅读
- xamarin - Xamarin App - Can't deploy to Android 11 emulator
- html - 超过父身高时如何匹配兄弟身高
- r - 如何在 R 中使用共享参数执行非线性最小二乘?
- php - 在 Laravel 上保存后如何获取正确的 Id 参数
- css - 有没有办法在不使用 className 的情况下使用 ID 在 React 中设置元素的样式?
- c++ - constexpr 字符串文字检查:语法短,没有运行时的可能性
- javascript - Discord.js - CommandFile.Run() 不是函数
- docker - 使用热重载进行调试
- mysql - 将我的节点 js 应用程序从 heroku 连接到 Godaddy 上的 Mysql 数据库
- python - 在 Python 的 statsmodels 中从 rucm 复制受限的 s.level