用了递归不知为什么会编译报错 js

需求是这样的,用户点击button会进行接口遍历,如果我在for循环里面进行递归的话,就是加上this.req(++i);编译会报错,注释了就正常编译,不知是什么原因导致的

ERROR in ./src/components/fundRunning/RiskMonitoringComponent/vastlyRedeem.js
Module build failed: TypeError: D:\fundRun_new\src\components\fundRunning\RiskMonitoringComponent\vastlyRedeem.js: Cannot read property 'file' of undefined
    at Plugin.buildExpressionHandler (D:\fundRun_new\node_modules\_babel-plugin-import@1.1.0@babel-plugin-import\lib\Plugin.js:50:27)
    at Plugin.ExpressionStatement (D:\fundRun_new\node_modules\_babel-plugin-import@1.1.0@babel-plugin-import\lib\Plugin.js:205:14)
    at applyInstance (D:\fundRun_new\node_modules\_babel-plugin-import@1.1.0@babel-plugin-import\lib\index.js:27:26)
    at PluginPass.ret.visitor.(anonymous function) (D:\fundRun_new\node_modules\_babel-plugin-import@1.1.0@babel-plugin-import\lib\index.js:86:9)
    at newFn (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\visitors.js:276:21)
    at NodePath._call (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\path\context.js:76:18)
    at NodePath.call (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\path\context.js:48:17)
    at NodePath.visit (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\path\context.js:105:12)
    at TraversalContext.visitQueue (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\context.js:150:16)
    at TraversalContext.visitMultiple (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\context.js:103:17)
    at TraversalContext.visit (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\context.js:190:19)
    at Function.traverse.node (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\index.js:114:17)
    at NodePath.visit (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\path\context.js:115:19)
    at TraversalContext.visitQueue (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\context.js:150:16)
    at TraversalContext.visitSingle (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\context.js:108:19)
    at TraversalContext.visit (D:\fundRun_new\node_modules\_babel-traverse@6.26.0@babel-traverse\lib\context.js:192:19)
 @ ./src/components/fundRunning/pageModule.js 411:20-69

图片描述

阅读 2k
2 个回答

搞半天我知道原因了,this.req(++i);是取不到i的值导致的问题,在for循环外面定义下i就行了

let i = 0;
for (i = num; i < dataSource.length; i++) {
  ...
  this.req(++i);
}

你这代码实在是不能理解,既然是for循环,怎么没有判断条件就直接break了,这样做的目的何在?
完全可以写成这样嘛:

req = (num) => {
    let {getUserName,dataSource} = this.state;
    //用了箭头函数就不用关心this的问题了
    let sendData = dataSource[num];
    fetchFundMs("xxx", {
        "p_date": sendData['1'] || '',
        ...
    }, res => {
        ...
    });
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题