Ich bin neu bei ReactJS. Zuvor habe ich jQuery verwendet, um alle benötigten Animationen oder Funktionen festzulegen. Aber jetzt versuche ich, ReactJS zu verwenden und die Verwendung von jQuery zu minimieren.
Mein Fall ist:
Ich versuche mit ReactJS ein Akkordeon zu bauen.
<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>
Verwenden von JQuery :
$('.accor > .head').on('click', function(){
$('.accor > .body').slideUp();
$(this).next().slideDown();
});
Meine Frage:
Wie kann ich das mit ReactJS machen?
javascript
jquery
reactjs
ND.Santos
quelle
quelle
jQuery
Inneren zu verwendenreact
...Antworten:
Sie sollten versuchen, jQuery in ReactJS zu vermeiden. Wenn Sie es jedoch wirklich verwenden möchten, fügen Sie es in die Lifecycle-Funktion componentDidMount () der Komponente ein.
z.B
class App extends React.Component { componentDidMount() { // Jquery here $(...)... } // ... }
Idealerweise möchten Sie eine wiederverwendbare Akkordeon-Komponente erstellen. Hierfür können Sie Jquery oder einfach nur Javascript + CSS verwenden.
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> ) } }
Dann können Sie es in jeder Komponente wie folgt verwenden:
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-Link hier: https://codepen.io/jzmmm/pen/JKLwEA?editors=0110 (Ich habe diesen Link in https ^ geändert.)
quelle
<Accordion>
. In meinem Codepen-Link können Sie hinzufügenconsole.log(this._acc)
, um zu sehen, was es tatsächlich ist.Ja, wir können jQuery in ReactJs verwenden. Hier werde ich erzählen, wie wir es mit npm verwenden können.
Schritt 1: Wechseln Sie
package.json
mit dem Befehl cd zu Ihrem Projektordner, in dem die Datei vorhanden ist.Schritt 2: Schreiben Sie den folgenden Befehl, um jquery mit npm zu installieren:
npm install jquery --save
Schritt 3: Importieren Sie nun
$
vonjquery
in Ihre jsx-Datei, wo Sie verwenden müssen.Beispiel :
Schreiben Sie das Folgende in 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
Schreiben Sie das Folgende in 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>
quelle
Schritt 1:
Schritt 2:
Irgendwo in Ihrem Projektordner
Schritt 3:
//loader.js window.$ = window.jQuery = require('jquery')
Schritt 4:
Importieren Sie den Loader in Ihre Stammdatei, bevor Sie die Dateien importieren, für die jQuery erforderlich ist
//App.js import '<pathToYourLoader>/loader.js'
Schritt 5:
Verwenden Sie jetzt jQuery an einer beliebigen Stelle in Ihrem Code:
//SomeReact.js class SomeClass extends React.Compontent { ... handleClick = () => { $('.accor > .head').on('click', function(){ $('.accor > .body').slideUp(); $(this).next().slideDown(); }); } ... export default SomeClass
quelle
$
in keiner Komponente verwenden.window.$ = ...
stellt sicher, dass Sie Zugriff auf eine$
beliebige Stelle in Ihrem Code haben, wenn Sie ihn im Stammverzeichnis Ihres Projekts korrekt gebündelt / importiert haben.$
Komponente zu importieren . Vielen Dank.import $ from 'jquery';"
aber ich konnte es nicht im Webstorm debuggen, bis ich Ihren Schritt 3,window.$ = window.jQuery = require('jquery')
Früher hatte ich Probleme bei der Verwendung von jquery mit React js. Daher habe ich die folgenden Schritte ausgeführt, damit es funktioniert.
npm install jquery --save
Dann,
import $ from "jquery";
Siehe hier
quelle
Um es zu installieren, führen Sie einfach den Befehl aus
oder
dann kannst du es wie in deine datei importieren
import $ from 'jquery';
quelle