React.js/CRA, Как вызвать или импортировать функцию JavaScript из другого файла?

Мой код становится длиннее, поэтому я решил перенести их в другой файл javaScript.

Я следовал этому актуальная тема по моему вопросу, но почему я получаю сообщение об ошибке, я просто копирую и вставляю все?

В приведенной выше ссылке вот код

//slideshow.js
function plusSlides(n) {
    showSlides(slideIndex += n);
}

//Home.js
class NextButton extends React.Component {
    constructor() {
        super();
        this.onClick = this.handleClick.bind(this);
    }

    handleClick (event) {
        script.plusSlides(1); // I don't know how to do this properly...
    }

    render() {
        return (
            <a className = "next" onClick = {this.onClick}>
                &#10095;
            </a>
        );
    } 
}

Это моя ошибка «Ошибка попытки импорта:« plusSlides »не экспортируется из файла« .. / plusSides »».

Я использовал CRA react.js. Мне нужно что-то настроить, чтобы это исправить?

Вам нужно показать нам содержимое plusSlides, чтобы помочь вам. А также файл, который его импортирует. Похоже, вы забыли его экспортировать или неправильно импортируете.

mackwerk 22.02.2019 09:08

Код добавлен сейчас. Также я пытался импортировать так import plusSlides from 'path-of-the-file' также я пробовал это import { plusSlides } from 'path-of-the-file' но все равно ошибка.

devjson 22.02.2019 09:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
515
2

Ответы 2

Должно быть, это сработало. Единственное, что вам нужно, это babel для переноса es6 (который, я полагаю, у вас есть, поскольку вы использовали реакцию CRA). Есть и другой способ сделать это, т.е. использовать экспорт по умолчанию.

слайд-шоу.js

export default (n)=>{
    showSlides(slideIndex += n);
}

и импортировать эту функцию вот так в Home.js

Home.js

import anyname from './slideshow.js' //I am assuming you have slideshow.js and Home.js in same directory

handleClick (event) {
    anyname(1); 
}

Вы действительно оставляете место после слова «файл»?? Не думаете ли вы, что его следует импортировать, например:

import plusSlides from '../plusSides';

Также посмотрите, что вы экспортируете из этого файла. Если это импорт по умолчанию, вы можете импортировать любое имя, которое хотите, в противном случае вы должны указать одинаковые имена при экспорте и импорте. Помните, что вы можете сделать только один экспорт по умолчанию для каждого файла.

Другие вопросы по теме