Javascript $(…)。图钉不是函数-reactJs,materializecs
我已经用jquery和materializecss组成了这个页面。所有的js在这方面都做得很好。但当我将它转移到reactJs组件时,一个js脚本停止了工作 这里是组件。正如您所看到的,在同一个materialize.min.js中,上面还有另一个js初始化,它工作得非常完美。为什么第二个没有Javascript $(…)。图钉不是函数-reactJs,materializecs,javascript,jquery,reactjs,materialize,Javascript,Jquery,Reactjs,Materialize,我已经用jquery和materializecss组成了这个页面。所有的js在这方面都做得很好。但当我将它转移到reactJs组件时,一个js脚本停止了工作 这里是组件。正如您所看到的,在同一个materialize.min.js中,上面还有另一个js初始化,它工作得非常完美。为什么第二个没有 var React = require('react'); var CharSpy = React.createClass({ componentDidMount: function()
var React = require('react');
var CharSpy = React.createClass({
componentDidMount: function() {
// this one works well
$('.scrollspy').scrollSpy();
// this one doesn't work
$('.tabs-wrapper').pushpin({ offset: 65 });
},
render: function() {
return (
<div className="tabs-wrapper">
<ul className="section table-of-contents">
<li><a href="#user"><span className="hide-on-small-only">Профиль</span></a></li>
<li><a href="#abilities"><span className="hide-on-small-only">Способности</span></a></li>
<li><a href="#activity"><span className="hide-on-small-only">Статистика</span></a></li>
<li><a href="#skillmap"><span className="hide-on-small-only">Карта</span></a></li>
<li><a href="#comments"><span className="hide-on-small-only">Комментарии</span></a></li>
</ul>
</div>
);
}
});
module.exports = CharSpy;
这个问题与在实际插件中调用documentready有关。如果你在使用react,那么你可能在使用类似browserify或webpack的东西。在react中,您正在componentDidMount函数中调用pushpin,但pushpin尚未定义自己 基本上你正在做的是:
- 定义jquery(如果使用require(jquery)语法,现在将触发documentready)
- 定义图钉
$(document).ready(function() {
在第61行的下方,拆下闭合支架:
})代码>
现在,当您需要pushpin库(或其他需要它的东西,如materializecss)时,pushpin函数将立即定义,并且不会引发未定义函数的错误。看起来确实缺少jQuery插件。但是这可能只是意味着你使用了错误版本的插件,或者在抛出TypeError之前它不会加载我使用了完全相同的jquery版本而没有react如果react导入了不同的版本呢?(只是随便说说,我不知道react和materializecss是什么,也不知道你是如何管理javascript模块的。)不,jquery通过index.html添加了globaly,并且没有jqury节点_模块我不是指jquery本身,我指的是jquery插件:你是如何加载它的,reactjs也在尝试加载它吗?我在使用另一个插件IonRangeSloider时遇到了同样的错误。我需要遵循同样的方法吗?我的IonRangeSlaider插件中没有$(document).ready(function(){)。
$(document).ready(function() {