首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React和turn.js (turn不是函数)

React和turn.js (turn不是函数)
EN

Stack Overflow用户
提问于 2019-04-05 19:31:10
回答 2查看 1.6K关注 0票数 1

我想用react运行turn.js。我在这里找到了一个示例:https://codesandbox.io/s/005xlk45mn

我调整了代码以适应我的项目,但是我得到了以下错误: jquery__WEBPACK_IMPORTED_MODULE_6___default(...)(...).turn :TypeError不是函数

代码语言:javascript
复制
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;

这也不起作用:

代码语言:javascript
复制
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>
        );
    }
EN

回答 2

Stack Overflow用户

发布于 2019-10-04 18:08:04

我也有同样的问题。我使用了一个较低版本的jQuery来解决这个问题,就像npm描述所说的那样

最新版本使用的是jQuery 1.12.0,因为jQuery 3.x打破了翻页功能。

使用JQuery版本的1.12.0,它可以正常工作

我甚至用React 16.10.x做了一个demo

票数 2
EN

Stack Overflow用户

发布于 2019-04-17 02:08:33

看起来turn.js插件没有附加到您的jQuery实例上。这很可能与您的webpack设置有关。正如您所提到的,代码在codesandbox中工作得很好。

为了将自身安装为jQuery插件,turn.js需要修改一个全局jQuery对象。尝试在您的webpack配置中使用ProvidePlugin,以便向turn.js公开jQuery。可能是这样的:

代码语言:javascript
复制
new webpack.ProvidePlugin({
    'window.jQuery': 'jquery',
    'window.$': 'jquery',
    $: 'jquery'
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55534431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档