必须点击两次做一个方法在React
Have to click two times to do a method in React
嘿,我目前正在Meteor和React的一个项目中工作,我目前正在使用Materialize对前端进行样式化。为了使下拉菜单和侧边导航工作,我需要在一些方法中添加一些jquery行。这里的问题是,我需要在按钮点击两次下拉栏和侧边栏激活或显示自己,但我已经点击了两次后,第一次只需点击一下。方法如下:
showDropdown(){
$(".dropdown-button").dropdown();
}
collapse(){
$('.button-collapse').sideNav({ menuWidth: 300, closeOnClick: true });
}
构造函数:export default class Navigation extends TrackerReact(React.Component) {
constructor() {
super();
this.showDropdown= this.showDropdown.bind(this);
this.collapse = this.collapse.bind(this);
}
这就是我使用这些方法在渲染:
render(){
var navOptions;
if (Roles.userIsInRole(Meteor.user(), 'user')){
navOptions = (
<div>
<nav>
<div className="nav-wrapper">
<a href="/" className="brand-logo">SeniorSmart</a>
<a href="" onClick={this.collapse} data-activates="mobile-demo" className="button-collapse"><i className="material-icons">menu</i></a>
<ul id="nav-mobile" className="right hide-on-med-and-down">
<li><a href="/">Hjem</a></li>
<li><a className='dropdown-button' href='' onClick={this.showDropdown} data-activates='dropdown1'>Drop Me!</a></li>
<li><a href="collapsible.html">JavaScript</a></li>
</ul>
</div>
</nav>
<ul id="dropdown1" className="dropdown-content">
<li><a href="/finn_aktiviteter">Finn aktiviteter</a></li>
<li><a href="#">Mine venners aktiviteter</a></li>
<li><a href="#">Mine påmeldinger</a></li>
<li><a href="/opprett_aktivitet">Opprett aktivitet</a></li>
</ul>
<ul className="side-nav" id="mobile-demo">
<li><a href="sass.html">Sass</a></li>
<li><a href="badges.html">Components</a></li>
<li><a href="collapsible.html">Javascript</a></li>
<li><a href="mobile.html">Mobile</a></li>
</ul>
</div>
)
你必须点击两次,因为那些jQuery插件需要初始化。你的第一次点击初始化它们,然后它们就会正常工作,之后所有的其他点击。
为了避免这种情况,您应该在componentDidMount
中初始化这些插件,但是您必须确保要使用的DOM元素放在屏幕上。
正如我在代码中看到的,只有在登录用户具有用户角色时才呈现导航。因此,如果user没有这个角色,nav元素将不会被呈现,这样插件就无法初始化。
相关文章:
- 将一个方法转换为promise:Nodejs
- 如何在所有ng点击事件AngularJS上启动一个方法
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 如何创建一个方法来验证数组的范围
- 如何将一个方法延迟到另一个方法首先完成,javascript
- 在Javascript中对类的每个实例调用一个方法
- 如何重写一个方法,并且仍然能够在重写的方法中使用基方法
- NodeJS-从同一文件中的另一个方法调用一个方法
- 有没有任何情况下,一个方法不应该是原型方法
- Jasmine间谍的函数称为一个方法
- 在带有参数列表的表单submit上调用一个方法
- 方法不在另一个方法内部调用
- 在 1 个方法中增加变量值会触发另一个方法的 for 循环,欢迎任何建议
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 如何在javascript中将变量的值分配给另一个方法
- 在浏览器关闭时,单击确认对话框中的“停留在页面上”,执行一个方法
- 使用一个方法在c#中启动其他方法
- 如何在Ember中转换到另一个路由时调用一个方法
- 在typescript中重载一个方法
- 我可以在setInterval函数中放入一个方法作为参数吗