我正在做一个项目。有必要将堆积的 Bootstrap 3 模板延伸到 React 应用程序中。该模板有很多各种各样的 jQuery 插件,它们都可以工作 - 但只是在移动到 React-Router (v. 4) 上的某个地方之前
我直接在 index.html 中连接插件并将它们添加到 React Components - 结果相同。
尝试了我在互联网上找到的所有内容。
例如:
import React from 'react';
import $ from 'jquery';
import { smoothlyMenu } from '../layouts/Helpers';
class TopHeader extends React.Component {
toggleNavigation(e) {
e.preventDefault();
$("body").toggleClass("mini-navbar");
smoothlyMenu();
}
render() {
return (
<div className="row border-bottom">
<nav className="navbar" style={{marginBottom: 0}}>
<div className="navbar-header">
<a onClick={this.toggleNavigation} className='nav-open' href="#">
<i className="fa fa-bars"></i>
</a>
</div>
<ul className="nav navbar-top-links navbar-right">
<li>
<a href="#">
<i className="fa fa-sign-out"></i> Log out
</a>
</li>
</ul>
</nav>
</div>
)
}
}
如您所见,单击时,应将一个类添加到正文中,这不会发生,即使 toggleNavigation 函数本身触发。
试过了
()=>toggleNavigation(),
()=>toggleNavigation.bind(this),
toggleNavigation()
我不知道为什么。没有改变。
在 index.html 中有类似的东西
$('.nav-open').toggleClass('mini-navbar');
路由器运行后也不起作用
要在调用第三方库、控制动画、选择文本或控制媒体播放时直接访问 DOM 元素,可以使用
ref.恕我直言:重写负责将菜单显示为单独容器的代码部分会更合适,该容器将根据道具和状态显示。
作为一种选择,您可以尝试使用 jquery 编写所有函数并将它们推送到主应用程序组件的componentDidMount()中。