Я новичок в 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?
javascript
jquery
reactjs
Н. Д. Сантос
источник
источник
jQuery
внутрьreact
...Ответы:
Вам следует избегать использования 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 ^)
источник
<Accordion>
. В моей ссылке на код вы можете добавить,console.log(this._acc)
чтобы увидеть, что это на самом деле.Да, мы можем использовать 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>
источник
Шаг 1:
Шаг 2:
Где-то в папке вашего проекта
Шаг 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
источник
$
ни в одном компоненте.window.$ = ...
гарантирует, что у вас есть доступ к$
любому месту вашего кода, если вы правильно скомпилировали / импортировали его в корень вашего проекта.$
компонент. Благодарю.import $ from 'jquery';"
но я не мог отлаживать его в webstorm, пока не использовал ваш шаг 3,window.$ = window.jQuery = require('jquery')
Раньше я сталкивался с проблемой использования jquery с React js , поэтому я сделал следующие шаги, чтобы заставить его работать:
npm install jquery --save
Потом,
import $ from "jquery";
Глянь сюда
источник
Для его установки достаточно запустить команду
или же
затем вы можете импортировать его в свой файл, например
import $ from 'jquery';
источник