使用 eval 调用导入的函数

3
我这样调用函数:

function_name(参数);

import {required, maxLength} from 'utils/validation';
import sitesForm from './sites.json';
import productForm from './product.json';

var validateSite = {};
for(var group in sitesForm ) {
    var groupObj = sitesForm[group];
    for(var el in groupObj ) {
        console.log(eval('required'))
        validateSite[groupObj[el].name] = groupObj[el].rules.map(eval)
    }
}

//utils/validation.js
export function required(value) {
  if (isEmpty(value)) {
    return 'Champs requis';
  }
}

我收到了一个错误提示,说required未定义,在我的json中,我得到了以下规则数组:

"rules":["required"]

然而,代码中的console.log(required)显示:[Function: required]

你知道为什么我不能使用eval和required吗?


1
不要使用eval。你想做什么? - SLaks
嗯,是的,eval会返回代码内部的结果。eval('required')基本上和required是一样的,而required是一个函数。你应该做的是eval('required()'),但是真的,你应该跳过eval!- required()。你为什么需要它呢? - Nebula
1个回答

1
如果您只想调用命名函数,应使用索引器表示法:
import validators from 'utils/validation';

validateSite[groupObj[el].name] = groupObj[el].rules.map(s => validators[s])

哦,太好了,它起作用了,就像这样做:import * as validators from 'utils/validation';然后我调用了这个 validateSite[groupObj[el].name] = groupObj[el].rules.map(s => validators[s]) - Alex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接