我想用react运行turn.js。我在这里找到了一个示例:https://codesandbox.io/s/005xlk45mn
我调整了代码以适应我的项目,但是我得到了以下错误: jquery__WEBPACK_IMPORTED_MODULE_6___default(...)(...).turn :TypeError不是函数
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>
);
}发布于 2019-10-04 18:08:04
我也有同样的问题。我使用了一个较低版本的jQuery来解决这个问题,就像npm描述所说的那样
最新版本使用的是jQuery 1.12.0,因为jQuery 3.x打破了翻页功能。
使用JQuery版本的1.12.0,它可以正常工作
我甚至用React 16.10.x做了一个demo
发布于 2019-04-17 02:08:33
看起来turn.js插件没有附加到您的jQuery实例上。这很可能与您的webpack设置有关。正如您所提到的,代码在codesandbox中工作得很好。
为了将自身安装为jQuery插件,turn.js需要修改一个全局jQuery对象。尝试在您的webpack配置中使用ProvidePlugin,以便向turn.js公开jQuery。可能是这样的:
new webpack.ProvidePlugin({
'window.jQuery': 'jquery',
'window.$': 'jquery',
$: 'jquery'
})https://stackoverflow.com/questions/55534431
复制相似问题