Реагировать и turn.js (поворот не функция) - PullRequest
0 голосов
/ 05 апреля 2019

Я хочу запустить turn.js с реакции.Я нашел пример здесь: https://codesandbox.io/s/005xlk45mn

Я адаптировал код для своего проекта, но получаю следующую ошибку: TypeError: jquery__WEBPACK_IMPORTED_MODULE_6 ___ default (...) (...). Turn не является функцией

import React, { Component } from 'react';
import $ from "jquery";
import "turn.js";

const options = {
  width: 800,
  height: 600,
  autoCenter: true,
  display: "double",
  acceleration: true,
  elevation: 50,
  gradients: !$.isTouch,
  when: {
    turned: function(e, page) {
      console.log("Current view: ", $(this).turn("view"));
    }
  }
};

class xxx extends Component {

    constructor(props) {
        super(props);
    }

    componentDidMount() {
        $("#flipbook").turn(options);
    }

    render() {
        return (
                <div id="flipbook">
                    <div className="hard">Turn.js</div>
                    <div className="hard"></div>
                    <div> Page 1 </div>
                    <div> Page 2 </div>
                    <div className="hard"></div>
                    <div className="hard"></div>
                </div>
        );
    }
}

export default Condolences;

это тоже не сработало:

import * as $ from "jquery"
componentDidMount() {
        $(this.el).turn();
    }
render() {
        return (
                <div id="flipbook" ref={ el => this.el = el }>
                    <div className="hard">Turn.js</div>
                    <div className="hard"></div>
                    <div> Page 1 </div>
                    <div> Page 2 </div>
                    <div className="hard"></div>
                    <div className="hard"></div>
                </div>
        );
    }

1 Ответ

0 голосов
/ 16 апреля 2019

Похоже, что плагин turn.js не подключен к вашему экземпляру jQuery. Вероятно, это связано с настройкой вашего веб-пакета Как вы заметили, код прекрасно работает в codeandbox.

Чтобы установить себя как плагин jQuery, turn.js необходимо изменить глобальный объект jQuery. Попробуйте использовать ProvidePlugin в конфигурации вашего веб-пакета, чтобы jQuery был доступен для turn.js. Возможно, что-то вроде этого:

new webpack.ProvidePlugin({
    'window.jQuery': 'jquery',
    'window.$': 'jquery',
    $: 'jquery'
})
...