为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2018-08-06 09:09:20
函数代码如下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请求,如何传递返回值?我是前端初学,希望可以讲具体一点,谢谢。
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

1、 babel 编译的代码就是这样的,比如:

原始代码:

import Test from './test';
Test.hehe();

编译之后应该是:

'use strict';function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }var _test = require('./test');var _test2 = _interopRequireDefault(_test);
_test2['default'].hehe();

2、 你定义的 tests 方法是类 networkEngine 的实例方法,需要先实例化才能调用

new networkEngine().tests();

如果你不想实例化就调用,那就需要定义成静态方法:

networkEngine.tests = function() {  console.log('静态方法 tests');
}

提示:类名最好首字母大写,NetworkEngine

3、 ajax 请求是异步的,拿返回值只能通过回调函数了


查看完整回答
反对 回复 2018-09-26
  • 1 回答
  • 0 关注
  • 885 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信