在react项目中用es6封装ajax请求,组件中调用总是报错,求解?

函数代码如下

class networkEngine{
    get(req){
        req.type = 'get' ;
        req.dataType = 'json' ;
        req.cache = 'false' ;
        req.beforeSend = xhr =>{
            xhr.setRequestHeader('siXtRq3jPQlKpfKa15PFN6cS-gzGzoHsz ','u5SyAXObPG19dqtpnt1NOnoe ') ;
        } ;
        $.ajax(req) ;
    }

    tests(){        console.log("test1")
    }
}export { networkEngine as default } ;

组件中的代码如下

import networkEngine from './../Server/networkEngine' ;class Teamholl extends React.Component {

    componentDidMount() {
      networkEngine.tests()
    }

    render(){        return (
            <div>...</div>
        ) ;
    }
}

export { Teamholl as default } ;

报错信息如下

Uncaught TypeError: _networkEngine2.default.tests is not a function

我有几点疑问:
1,为什么我的类名是networkEngine报错信息却提示_networkEngine2.default.tests不是函数。
2,正确的调用方式是什么?
3,ajax的get请求,如何传递返回值?

我是前端初学,希望可以讲具体一点,谢谢。


炎炎设计
浏览 886回答 1
1回答

胡子哥哥

1、 babel 编译的代码就是这样的,比如:原始代码:import&nbsp;Test&nbsp;from&nbsp;'./test'; Test.hehe();编译之后应该是:'use&nbsp;strict';function&nbsp;_interopRequireDefault(obj)&nbsp;{&nbsp;return&nbsp;obj&nbsp;&&&nbsp;obj.__esModule&nbsp;?&nbsp;obj&nbsp;:&nbsp;{&nbsp;'default':&nbsp;obj&nbsp;};&nbsp;}var&nbsp;_test&nbsp;=&nbsp;require('./test');var&nbsp;_test2&nbsp;=&nbsp;_interopRequireDefault(_test); _test2['default'].hehe();2、 你定义的&nbsp;tests&nbsp;方法是类&nbsp;networkEngine&nbsp;的实例方法,需要先实例化才能调用new&nbsp;networkEngine().tests();如果你不想实例化就调用,那就需要定义成静态方法:networkEngine.tests&nbsp;=&nbsp;function()&nbsp;{&nbsp;&nbsp;console.log('静态方法&nbsp;tests'); }提示:类名最好首字母大写,NetworkEngine3、 ajax 请求是异步的,拿返回值只能通过回调函数了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript