当前位置: 首页 > 面试题库 >

如何在ReactJS中使用JQuery

鱼阳伯
2023-03-14
问题内容

我是ReactJS的新手。以前,我使用jQuery设置所需的任何动画或功能。但是现在我正在尝试使用ReactJS并最小化jQuery的使用。

我的情况是:

我正在尝试使用ReactJS构建手风琴。

<div class="accor">
   <div class="head">Head 1</div>
   <div class="body hide">Body 1</div>
</div>
<div class="accor">
   <div class="head">Head 1</div>
   <div class="body hide">Body 1</div>
</div>
<div class="accor">
   <div class="head">Head 1</div>
   <div class="body hide">Body 1</div>
</div>

使用JQuery

$('.accor > .head').on('click', function(){
   $('.accor > .body').slideUp();
   $(this).next().slideDown();
});

我的问题:

我该如何使用ReactJS?


问题答案:

您应该尝试避免在ReactJS中使用jQuery。但是,如果您真的想使用它,则可以将其放入组件的componentDidMount()生命周期函数中。

例如

class App extends React.Component {
  componentDidMount() {
    // Jquery here $(...)...
  }

  // ...
}

理想情况下,您想创建一个可重用的手风琴组件。为此,您可以使用Jquery,也可以仅使用普通的javascript + CSS。

class Accordion extends React.Component {
  constructor() {
    super();
    this._handleClick = this._handleClick.bind(this);
  }

  componentDidMount() {
    this._handleClick();
  }

  _handleClick() {
    const acc = this._acc.children;
    for (let i = 0; i < acc.length; i++) {
      let a = acc[i];
      a.onclick = () => a.classList.toggle("active");
    }
  }

  render() {
    return (
      <div 
        ref={a => this._acc = a} 
        onClick={this._handleClick}>
        {this.props.children}
      </div>
    )
  }
}

然后,您可以在任何组件中使用它,如下所示:

class App extends React.Component {
  render() {
    return (
      <div>
        <Accordion>
          <div className="accor">
            <div className="head">Head 1</div>
            <div className="body"></div>
          </div>
        </Accordion>
      </div>
    );
  }
}

此处的Codepen链接:https
://codepen.io/jzmmm/pen/JKLwEA?editors
= 0110 (我将此链接更改为https ^)



 类似资料:
  • 除了使用DangerouslySetInnerHTML之外,还有其他的方法吗? 谢谢!

  • 问题内容: 我想在自己的内部加载Google API客户端库,并且会在单独的javascript文件中调用方法。然后,该方法将输出到控制台。 客户端库已加载,没有任何问题,但消息未从控制台打印出来,我认为这是因为根本没有调用该方法。 这是我的: 这是包含方法的javascript文件: 如果这是纯JavaScript,则该方法将如下所示: es6中是否有任何与对象相似的东西。 问题答案: 组件方法

  • 问题内容: 从官方教程中: 在卸载和销毁组件之前立即调用。使用此方法执行任何必要的清除,例如使计时器无效,取消网络请求或清除在其中创建的所有DOM元素。 我了解“使计时器无效”。可以用终止。但是我不理解“清理在中创建的任何DOM元素”,我可以看到这种情况的示例吗? 问题答案: 如果网络请求发送库支持中止正在进行的网络请求调用,则绝对可以在方法中调用该请求。 但是,与清理元素有关。根据目前的经验,我

  • 问题内容: 我是ReactJS的新手,很抱歉,如果听起来不对。我有一个根据接收到的数据创建多个表行的组件。 列中的每个单元格都有一个单选复选框。因此,用户可以从现有行中选择一个和一个。选项应在页脚中显示。那就是我被困住的地方。 在jQuery中,我可以做一些事情,例如选择一个单选复选框类型并将其插入第一个页脚单元格。 但是肯定有一种Reactjs方式,我完全不知道吗?非常感谢 问题答案: 渲染的任

  • 在jQuery中,我可以执行这样的操作,以获得一个单选复选框类型的选择,并将其插入到第一个页脚单元格中。 但肯定有一种Reactjs方式,我完全不知道?多谢

  • 问题内容: 我想阻止点击事件起泡。因此,我在代码中添加了e.stopPropagation()。我总是在控制台中看到一个错误,那就是: 在reactjs中设置stopPropagation的正确方法是什么? 问题答案: 正确的方法是使用, 您的事件处理程序将传递SyntheticEvent实例,该实例是围绕浏览器本地事件的跨浏览器包装器。它具有与浏览器本机事件相同的接口,包括stopPropaga