Как вызвать функцию компонента react в других файлах js внутри проекта

#javascript #reactjs #functional-programming

#javascript #reactjs #функциональное программирование

Вопрос:

У меня есть файл компонента React с именем FilterBox.jsx, в нем есть функция со следующим кодом:

 addTimeFilter() {
   var clickedItem2 = sessionStorage.getItem("clicked_value");
   const fltr = TIME_FILTER_MAP['__time_range'];
   const vals = '2019-03-25T00:00:00 : 2019-03-26T00:00:00';
   const selectedValues = Object.assign({}, {"__time_range" : "2019-03-25T00:00:00 : 2019-03-26T00:00:00","BrandName" : clickedItem2});
   selectedValues[fltr] = vals;
   this.setState({ selectedValues, hasChanged: true });
   if (this.props.instantFiltering) {
      this.props.onChange(fltr, vals, false, true);
   }
}
  

У меня есть другой файл, который является .js файлом. Я хочу вызвать addTimeFilter() внутри .js файла. Пожалуйста, помогите мне, как это сделать.

Я попытался импортировать его следующим образом:

  import FilterBox from '../../FilterBox';
  

Затем я попытался сделать это внутри функции в файле .js, чтобы вызвать следующую функцию:

 function select(){
     const filter = new FilterBox();
     filter.addTimeFilter();
}
  

Но только импорт FilterBox из ‘.. / ../ FilterBox’ выдает мне ошибки

Комментарии:

1. где вы определили свою addTimeFilter функцию? внутри класса или вне класса?

Ответ №1:

Вы должны экспортировать addTimeFilter. Затем, когда вы импортируете функцию, попробуйте это:


 import { addTimeFilter } from '../../FilterBox';
  

Я тоже вроде как новичок в react, но что-то вроде этого должно сработать! 🙂

РЕДАКТИРОВАТЬ: попробуйте экспортировать класс с помощью «export default FilterBox» в строке вашего файла

Ответ №2:

Вам нужно написать export ключевое слово перед именем функции, чтобы другие файлы js знали, что импортировать.

 export function addTimeFilter() {
/.../
}
  

Комментарии:

1. Нет, это не сработает, так как я уже экспортировал весь класс компонента с export default FIlteBox моим именем компонента

2. Затем импортируйте его, как import addTimeFilter from '../../FilterBox'; это должно работать

3. Что FIlteBox в export default FIlteBox том, что для экспорта функции или класса (не для файла) мы используем ключевое слово export .

4. FilterBox — это имя моего компонента / класса

5. Затем используйте import FIlteBox from '../../FilterBox'; вместо import addTimeFilter from '../../FilterBox';