Jestem nowy w ReactJS. Wcześniej używałem jQuery do ustawiania dowolnej animacji lub funkcji, których potrzebowałem. Ale teraz próbuję użyć ReactJS i zminimalizować użycie jQuery.
Mój przypadek to:
Próbuję zbudować akordeon z 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>
przy użyciu JQuery :
$('.accor > .head').on('click', function(){
$('.accor > .body').slideUp();
$(this).next().slideDown();
});
Moje pytanie:
Jak mogę to zrobić z ReactJS?
javascript
jquery
reactjs
ND.Santos
źródło
źródło
jQuery
środkureact
...Odpowiedzi:
Powinieneś unikać jQuery w ReactJS. Ale jeśli naprawdę chcesz go użyć, umieść go w funkcji cyklu życia komponentu componentDidMount ().
na przykład
class App extends React.Component { componentDidMount() { // Jquery here $(...)... } // ... }
Idealnie byłoby, gdybyś chciał stworzyć komponent Accordion wielokrotnego użytku. W tym celu możesz użyć Jquery lub po prostu użyć zwykłego 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> ) } }
Następnie możesz go użyć w dowolnym komponencie, takim jak:
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> ); } }
Link do Codepen tutaj: https://codepen.io/jzmmm/pen/JKLwEA?editors=0110 (zmieniłem ten link na https ^)
źródło
<Accordion>
. W moim linku codepen możesz dodać,console.log(this._acc)
aby zobaczyć, co to właściwie jest.Tak, możemy używać jQuery w ReactJs. Tutaj powiem, jak możemy go wykorzystać za pomocą npm.
Krok 1: Przejdź do folderu projektu, w którym
package.json
znajduje się plik, za pomocą terminala za pomocą polecenia cd.krok 2: Napisz następujące polecenie, aby zainstalować jquery przy użyciu npm:
npm install jquery --save
Krok 3: Teraz zaimportuj
$
zjquery
do pliku jsx, w którym chcesz użyć.Przykład :
napisz poniżej w 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
napisz poniżej w 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>
źródło
Krok 1:
Krok 2:
Gdzieś w folderze projektu
Krok 3:
//loader.js window.$ = window.jQuery = require('jquery')
Krok 4:
Zaimportuj moduł ładujący do pliku głównego, zanim zaimportujesz pliki, które wymagają jQuery
//App.js import '<pathToYourLoader>/loader.js'
Krok 5:
Teraz użyj jQuery w dowolnym miejscu w kodzie:
//SomeReact.js class SomeClass extends React.Compontent { ... handleClick = () => { $('.accor > .head').on('click', function(){ $('.accor > .body').slideUp(); $(this).next().slideDown(); }); } ... export default SomeClass
źródło
$
w żadnym komponencie.window.$ = ...
zapewnia, że masz dostęp do$
dowolnego miejsca w kodzie, jeśli poprawnie umieściłeś / zaimportowałeś go w katalogu głównym swojego projektu.$
komponentu. Dzięki.import $ from 'jquery';"
ale nie mogłem go zdebugować w webstorm, dopóki nie użyłem twojego kroku 3,window.$ = window.jQuery = require('jquery')
Wcześniej miałem problem z używaniem jquery w React js , więc wykonałem następujące kroki, aby to działało-
npm install jquery --save
Następnie,
import $ from "jquery";
Spójrz tutaj
źródło
Aby go zainstalować, po prostu uruchom polecenie
lub
następnie możesz zaimportować go do swojego pliku, np
import $ from 'jquery';
źródło