首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$(.).pushpin不是函数- reactJs,Materializecss

$(.).pushpin不是函数- reactJs,Materializecss
EN

Stack Overflow用户
提问于 2015-06-27 17:22:54
回答 1查看 3.4K关注 0票数 3

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

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

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

错误:

代码语言:javascript
复制
Uncaught TypeError: $(...).pushpin is not a function
React.createClass.componentDidMount @ main.js:22993
assign.notifyAll @ main.js:3920O
N_DOM_READY_QUEUEING.close @ main.js:17089
Mixin.closeAll @ main.js:19861
Mixin.perform @ main.js:19802
batchedMountComponentIntoNode @ main.js:15144
Mixin.perform @ main.js:19788
ReactDefaultBatchingStrategy.batchedUpdates @ main.js:12271
batchedUpdates @ main.js:18015
ReactMount._renderNewRootComponent @ main.js:15279
ReactPerf.measure.wrapper @ main.js:16518
ReactMount.render @ main.js:15368
ReactPerf.measure.wrapper @ main.js:16518
(anonymous function) @ main.js:23680
React.createClass.statics.run.dispatchHandler @ main.js:1852(
anonymous function) @ main.js:1820(
anonymous function) @ main.js:874(a
nonymous function) @ main.js:874Tr
ansition.to @ main.js:877(a
nonymous function) @ main.js:1819T
ransition.from @ main.js:856di
spatch @ main.js:1816r
efresh @ main.js:1867r
un @ main.js:1863r
unRouter @ main.js:25552
25../components/app @ main.js:23679
s @ main.js:1e @ 
main.js:1(ano
nymous function)
EN

回答 1

Stack Overflow用户

发布于 2015-10-09 18:10:27

这个问题与在实际插件中调用文档就绪有关。如果你使用的是react,那么你可能使用的是browserify或webpack之类的东西。在function中,您在componentDidMount函数中调用图钉,但是图钉本身还没有定义。

基本上你要做的是:

  • 定义jquery (如果使用require(jquery)语法,现在触发文档就绪)
  • 定义图钉

在图钉内部,它监听已经触发的document,因此它从不定义自己。

您可以通过移除图钉插件中的两行来使其工作,第二行就是:

代码语言:javascript
复制
  $(document).ready(function() {

在第61行的下面,去掉最后的括号:

});

现在,当您需要图钉库(或其他需要它的东西,如materializecss)时,将立即定义图钉函数,并且不会抛出关于未定义函数的错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31091454

复制
相关文章

相似问题

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