Как использовать JQuery с ReactJS
Я новичок в ReactJS. Ранее я использовал jQuery для установки любой необходимой мне анимации или функции. Но сейчас я пытаюсь использовать ReactJS и минимизировать использование 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>
используя JQuery:
$('.accor > .head').on('click', function(){
$('.accor > .body').slideUp();
$(this).next().slideDown();
});
Мой вопрос:
Как я могу сделать это с ReactJS?
Ответы
Ответ 1
Вы должны попытаться избежать jQuery в ReactJS. Но если вы действительно хотите его использовать, вы бы поместили его в функцию жизненного цикла componentDidMount() компонента.
например
class App extends React.Component {
componentDidMount() {
// Jquery here $(...)...
}
// ...
}
В идеале вы хотели бы создать повторно используемый компонент 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>
)
}
}
Тогда вы можете использовать его в любом компоненте так:
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 здесь: https://codepen.io/jzmmm/pen/JKLwEA?editors=0110 (я изменил эту ссылку на https ^)
Ответ 2
Да, мы можем использовать jQuery в ReactJs. Здесь я расскажу, как мы можем использовать его, используя npm.
Шаг 1: Перейдите в папку вашего проекта, где присутствует файл package.json
используя терминал, используя команду cd.
Шаг 2: Напишите следующую команду для установки jquery с помощью npm: 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
напишите ниже в 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>
Ответ 3
Шаг 1:
npm install jquery
Шаг 2:
touch loader.js
Где-то в папке проекта
Шаг 3:
//loader.js
window.$ = window.jQuery = require('jquery')
Шаг 4:
Импортируйте загрузчик в корневой файл, прежде чем импортировать файлы, требующие jQuery
//App.js
import '<pathToYourLoader>/loader.js'
Шаг 5:
Теперь используйте jQuery в любом месте вашего кода:
//SomeReact.js
class SomeClass extends React.Compontent {
...
handleClick = () => {
$('.accor > .head').on('click', function(){
$('.accor > .body').slideUp();
$(this).next().slideDown();
});
}
...
export default SomeClass
Ответ 4
Ранее я столкнулся с проблемой при использовании jquery с React js, поэтому я сделал следующие шаги, чтобы сделать это working-
-
npm install jquery --save
-
Затем import $ from "jquery";
Посмотреть здесь