Soy nuevo en ReactJS. Anteriormente, usé jQuery para configurar cualquier animación o función que necesitaba. Pero ahora estoy tratando de usar ReactJS y minimizar el uso de jQuery.
Mi caso es:
Estoy tratando de construir un acordeón con 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>
usando JQuery :
$('.accor > .head').on('click', function(){
$('.accor > .body').slideUp();
$(this).next().slideDown();
});
Mi pregunta:
¿Cómo puedo hacer esto con ReactJS?
javascript
jquery
reactjs
ND.Santos
fuente
fuente
jQuery
el interiorreact
...Respuestas:
Debería intentar evitar jQuery en ReactJS. Pero si realmente quiere usarlo, lo pondría en la función de ciclo de vida componentDidMount () del componente.
p.ej
class App extends React.Component { componentDidMount() { // Jquery here $(...)... } // ... }
Idealmente, querrá crear un componente de acordeón reutilizable. Para esto, puede usar Jquery, o simplemente usar javascript + CSS simple.
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> ) } }
Entonces puedes usarlo en cualquier componente así:
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> ); } }
Enlace de Codepen aquí: https://codepen.io/jzmmm/pen/JKLwEA?editors=0110 (Cambié este enlace a https ^)
fuente
<Accordion>
. En mi enlace de codepen, puede agregarconsole.log(this._acc)
para ver qué es realmente.Sí, podemos usar jQuery en ReactJs. Aquí te diré cómo podemos usarlo usando npm.
Paso 1: Vaya a la carpeta de su proyecto donde el
package.json
archivo está presente a través del terminal usando el comando cd.paso 2: escriba el siguiente comando para instalar jquery usando npm:
npm install jquery --save
paso 3: Ahora, importe
$
desdejquery
su archivo jsx donde necesita usar.Ejemplo :
escribe lo siguiente en 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
escribe lo siguiente en 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>
fuente
Paso 1:
Paso 2:
En algún lugar de la carpeta de su proyecto
Paso 3:
//loader.js window.$ = window.jQuery = require('jquery')
Etapa 4:
Importe el cargador a su archivo raíz antes de importar los archivos que requieren jQuery
//App.js import '<pathToYourLoader>/loader.js'
Paso 5:
Ahora use jQuery en cualquier lugar de su código:
//SomeReact.js class SomeClass extends React.Compontent { ... handleClick = () => { $('.accor > .head').on('click', function(){ $('.accor > .body').slideUp(); $(this).next().slideDown(); }); } ... export default SomeClass
fuente
$
en ningún componente.window.$ = ...
asegura que tenga acceso a$
cualquier parte de su código si lo ha empaquetado / importado correctamente en la raíz de su proyecto.$
en componente. Gracias.import $ from 'jquery';"
pero no pude depurarlo en webstorm hasta que usé su paso 3,window.$ = window.jQuery = require('jquery')
Anteriormente, tenía problemas al usar jquery con React js , así que seguí los pasos para que funcionara:
npm install jquery --save
Luego,
import $ from "jquery";
Mira aquí
fuente
Para instalarlo, simplemente ejecute el comando
o
entonces puedes importarlo en tu archivo como
import $ from 'jquery';
fuente