如何在ReactJS上使用JQuery

ND.*_*tos 50 javascript jquery reactjs

我是ReactJS的新手.直到现在我正在使用JQuery来设置我需要的任何动画或某些功能.但现在我正在尝试使用ReactJS并使用JQuery进行最小化.

我的案例是:
我正在尝试建立自己的手风琴,使用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>
Run Code Online (Sandbox Code Playgroud)

使用JQuery:

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

我的问题:
1.如何在ReactJS中做到这一点?


谢谢你

sol*_*... 92

是的,我们可以在ReactJs中使用jQuery.在这里,我将告诉我们如何使用npm来使用它.

步骤1:package.json使用cd命令转到使用终端存在文件的项目文件夹.

步骤2:编写以下命令以使用npm安装jquery:npm install jquery --save

第3步:现在,$jquery您需要使用的jsx文件导入.

例:

index.jsx中写下面的内容

import React from 'react';
import ReactDOM from 'react-dom';
import $ from 'jquery';


//   react code here


$("button").click(function(){
    $.get("demo_test.asp", function(data, status){
        alert("Data: " + data + "\nStatus: " + status);
    });
});

// react code here
Run Code Online (Sandbox Code Playgroud)

index.html中写下面的内容

<!DOCTYPE html>
<html>
<head>
    <script src="index.jsx"></script>
    <!-- other scripting files -->
</head>
<body>
    <!-- other useful tags -->
    <div id="div1">
        <h2>Let jQuery AJAX Change This Text</h2>
    </div>
    <button>Get External Content</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 虽然这个答案在技术上可能是正确的,但在我看来,它还不足以提醒读者[在像 React 这样的 MV* 库的上下文中使用普通 JS 或 jQuery 进行直接 DOM 操作**几乎总是一种反模式**] (/sf/answers/3591324271/)。 (7认同)
  • 对于像我这样的 react js 新手非常有用 (6认同)

jzm*_*jzm 43

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

例如

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

  // ...
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,您需要创建可重复使用的Accordion组件.为此你可以使用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>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 为什么应该避免尝试一起使用它们? (2认同)
  • @Sam 想知道同样的事情,并找到了[那个问题](/sf/answers/3591324271/)的答案。 (2认同)

Dav*_*oos 13

步骤1:

npm install jquery
Run Code Online (Sandbox Code Playgroud)

第2步:

touch loader.js 
Run Code Online (Sandbox Code Playgroud)

项目文件夹中的某个位置

第三步:

//loader.js
window.$ = window.jQuery = require('jquery')
Run Code Online (Sandbox Code Playgroud)

第四步:

在导入需要jQuery的文件之前,将加载程序导入到您的根文件中

//App.js
import '<pathToYourLoader>/loader.js'
Run Code Online (Sandbox Code Playgroud)

步骤5:

现在在代码中的任何地方使用jQuery:

//SomeReact.js
class SomeClass extends React.Compontent {

...

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

...

export default SomeClass
Run Code Online (Sandbox Code Playgroud)


har*_*ugh 10

早些时候,我在将jqueryReact js一起使用时遇到了问题,所以我按照以下步骤使其工作-

  1. npm install jquery --save

  2. 然后, import $ from "jquery";

    看这里


小智 6

要安装它,只需运行命令

npm install jquery
Run Code Online (Sandbox Code Playgroud)

或者

yarn add jquery
Run Code Online (Sandbox Code Playgroud)

然后你可以将它导入到你的文件中

import $ from 'jquery';
Run Code Online (Sandbox Code Playgroud)