Задать вопрос
@lietryit

Импорт переменных React?

Вечер в хату! Появилась проблема, у меня есть компонент, в нём я использовал js, но для удобства некоторые функции в javascript немного изменил (сделал такую себе мини библиотеку) вот пример:

var $ = (selector) => {
  return document.querySelector(selector)
}


После чего решил вынести это всё дело в отдельный .js файл, и импортировать в React-компонент, но тут меня компилятор смело шлёт н..., с вот такой вот ошибкой Line 7: '$' is not defined no-undef. React просто не видит переменную $, хотя я всё импортировал в компонент, вот код:
import React, { Component } from 'react';

import './style.css';
import './param';

class Nav_btn extends Component { 
componentDidMount = () => {
  $('#nav-trigger').onclick = () => {
    $('#menu-navigation').classList.add('active');
    $('#menu-close').classList.add('active');
  }
}

render() {
	return (
      <div>
        <button id = 'nav-trigger'><div>Menu</div></button>
      </div>
    );
}
}
export default Nav_btn;


а в param.js лежит выше указанный код:

var $ = (selector) => {
  return document.querySelector(selector)
}


Я если честно не понимаю в чём может заключаться проблема, поэтому написал сюда, мейдэй! мейдэй!
  • Вопрос задан
  • 2236 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
hzzzzl
@hzzzzl
export default function (selector) {
  return document.querySelector(selector)
}

.......

import $ from './param'


только в реакте лучше на button вешать onClick, и там уже как-нибудь через состояние подставлять нужный класс при рендере
Ответ написан
rockon404
@rockon404 Куратор тега React
Frontend Developer
1. У вас не "React просто не видит переменную $", а выпадает исключение ESLint.

2. Модули следует экспортировать и импортировать в явном виде:

param.js
export default selector => document.querySelector(selector);


Nav_btn.js
import React, { Component } from 'react';
import $ from './param';

import './style.css';


// ...


3. Подобные подходы в React разработке не используют. Советую изучить возможности библиотеки и решать подобные задачи средствами React.

Простой пример:
const Example = () => {
  const [isActive, setIsActive] = useState(false);
  const handleClick = () => {
    setIsActive(!isActive);
  };

  return (
    <div>
      <div className={isActive ? 'active' : ''}>Example</div>
      <button onClick={handleClick}>Toggle active</button>
    </div>
  );
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы