TypeError: this.$el.bracket не является функцией

Я пробовал каждый ответ, который я могу найти в течение нескольких часов... Любая помощь очень ценится!

Я пытаюсь использовать jQuery Tournament Bracket в своем реагирующем компоненте. Я пытался импортировать jquery, например import $ from "jquery";, который работает, как и ожидалось, но когда я делаю import "jquery-bracket/dist/jquery.bracket.min.js" или даже import "jquery-bracket", я вижу следующую ошибку в своем браузере.

TypeError: this.$el.bracket is not a function

Я следил за этим руководством о том, как реализовать плагин jQuery в React. Ниже приведен код компонента, о котором я тоже говорю.

import React from 'react';
import axios from 'axios';

import $ from "jquery";

// Tried //
// import jQueryBracket from "jquery-bracket/dist/jquery.bracket.min.js";
// import "jquery-bracket/dist/jquery.bracket.min.js";
// Currently using //
import "jquery-bracket/dist/jquery.bracket.min.js";


class Bracket extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            teams: "",
            scores: ""
        };
    }

    componentDidMount() {
        let minimalData = {
            teams: [
                ["Team 1", "Team 2"],
                ["Team 3", null],
                ["Team 4", null],
                ["Team 5", null]
            ],
            results: [
                [
                    [[1, 0], [null, null], [null, null], [null, null]],
                    [[null, null], [1, 4]],
                    [[null, null], [null, null]]
                ]
            ]
        }

        let resizeParameters = {
            teamWidth: 100,
            scoreWidth: 30,
            matchMargin: 25,
            roundMargin: 45,
            init: minimalData
        };

        this.$el = $(this.el);
        this.$el.bracket(resizeParameters);
        // $("#bracket").bracket(resizeParameters);
    }

    render() {
        return (
            <>
                <div ref = {el => this.el = el}>Bracket goes here...</div>
                {/*<div id = "bracket"></div>*/}
            </>

        )
    }
}

export default Bracket;

где ошибка TypeError: this.$el.bracket не является функцией? Это со страницы реакции или файла импорта «jquery-bracket/dist/jquery.bracket.min.js»? Глядя на учебник, похоже, что вам также нужно добавить import $ from "jquery"; в ваш файл jquery-bracket/dist/jquery.bracket.min.js.

UnfocusedDrive 13.12.2020 05:20

@PowerGlove Я уже пробовал import $ from "jquery"; в jquery-bracket/dist/jquery.bracket.min.js. Как я уже сказал выше, «я вижу следующую ошибку в своем браузере». Спасибо за ваше время заранее.

MsonC 13.12.2020 06:23
Поведение ключевого слова "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
146
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вместо того, чтобы импортировать jquery.bracket.min.js из node_modules, поскольку это доставляло мне много хлопот, я попытался переместить jquery.bracket.min.js в каталог компонентов. Я не знаю почему, но после того, как я исправил проблему с импортом, eslint выдал кучу ошибок. Чтобы временно исправить ошибки eslint, я добавил следующую строку вверху jquery.bracket.min.js

/* eslint-disable no-unused-expressions */

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