Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $(…)。图钉不是函数-reactJs,materializecs_Javascript_Jquery_Reactjs_Materialize - Fatal编程技术网

Javascript $(…)。图钉不是函数-reactJs,materializecs

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()

我已经用jquery和materializecss组成了这个页面。所有的js在这方面都做得很好。但当我将它转移到reactJs组件时,一个js脚本停止了工作

这里是组件。正如您所看到的,在同一个materialize.min.js中,上面还有另一个js初始化,它工作得非常完美。为什么第二个没有

    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)
  • 定义图钉
在pushpin内部,它侦听已启动的document ready,因此它从不定义自己

您可以通过删除图钉插件内部的两行代码使其正常工作,第二行代码就是:

  $(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() {