Je suis novice avec ReactJS. Jusqu'à présent, j'utilise JQuery pour définir une animation ou une fonctionnalité dont j'avais besoin. Mais maintenant, j'essaie d'utiliser ReactJS et de minimiser l'utilisation de JQuery.
Mon cas est:
J'essaie de construire son propre accordéon , avec JQuery, je peux le faire, mais avec ReactJS, je ne comprends pas comment.
<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>
en utilisant JQuery:
$('.accor > .head').on('click', function(){
$('.accor > .body').slideUp();
$(this).next().slideDown();
});
Ma question:
1. Comment faire cela dans ReactJS?
Merci avant
Vous devriez essayer d'éviter jQuery dans ReactJS. Mais si vous voulez vraiment l'utiliser, vous devez le mettre dans la fonction de cycle de vie composantDidMount () du composant.
par exemple.
class App extends React.Component {
componentDidMount() {
// Jquery here $(...)...
}
// ...
}
Idéalement, vous voudriez créer un composant Accordion réutilisable. Pour cela, vous pouvez utiliser Jquery ou simplement utiliser 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>
)
}
}
Ensuite, vous pouvez l’utiliser dans n’importe quel composant, comme ceci:
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>
);
}
}
Lien vers le codepen ici: https://codepen.io/jzmmm/pen/JKLwEA?editors=0110
Oui, nous pouvons utiliser jQuery dans ReactJs. Ici, je vais vous dire comment nous pouvons l’utiliser avec npm.
étape 1: Allez dans le dossier de votre projet où le fichier package.json
est présent via terminal en utilisant la commande cd.
étape 2: Ecrivez la commande suivante pour installer jquery à l'aide de npm: npm install jquery --save
étape 3: Maintenant, importez $
de jquery
dans votre fichier jsx où vous devez utiliser.
Exemple:
écrivez ci-dessous dans 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
écrivez ci-dessous dans 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>
Étape 1:
npm install jquery
Étape 2:
touch loader.js
Quelque part dans votre dossier de projet
Étape 3:
//loader.js
window.$ = window.jQuery = require('jquery')
Étape 4:
Importez le chargeur dans votre fichier racine avant d'importer les fichiers nécessitant jQuery
//App.js
import '<pathToYourLoader>/loader.js'
Étape 5:
Maintenant, utilisez jQuery n'importe où dans votre code:
//SomeReact.js
class SomeClass extends React.Compontent {
...
handleClick = () => {
$('.accor > .head').on('click', function(){
$('.accor > .body').slideUp();
$(this).next().slideDown();
});
}
...
export default SomeClass
Un peu plus tôt, j'avais du mal à utiliser jquery avec React js, alors j'ai suivi les étapes pour que cela fonctionne-
npm install jquery --save
Alors, import $ from "jquery";