Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将字符串转换为类名(而不在窗口中定义它)?_Javascript_Reactjs_Ecmascript 6_Brunch_Es6 Module Loader - Fatal编程技术网

Javascript 如何将字符串转换为类名(而不在窗口中定义它)?

Javascript 如何将字符串转换为类名(而不在窗口中定义它)?,javascript,reactjs,ecmascript-6,brunch,es6-module-loader,Javascript,Reactjs,Ecmascript 6,Brunch,Es6 Module Loader,从“/TestClass”导入TestClass 给定字符串'TestClass',如何在该文件中引用TestClass eval('TestClass')不起作用,因为未定义TestClass 但是,如果我执行let Test=TestClass,然后执行eval('Test'),它会根据需要返回TestClass的构造函数 当eval('Test')工作时,为什么eval('Test')不工作 上下文: 给定许多元素,如,我想创建一个通用函数,将适当的React组件呈现到这些元素中。这些组件

从“/TestClass”导入TestClass

给定字符串
'TestClass'
,如何在该文件中引用
TestClass

eval('TestClass')
不起作用,因为未定义
TestClass

但是,如果我执行
let Test=TestClass
,然后执行
eval('Test')
,它会根据需要返回
TestClass
的构造函数

eval('Test')
工作时,为什么
eval('Test')
不工作

上下文: 给定许多元素,如
,我想创建一个通用函数,将适当的React组件呈现到这些元素中。这些组件类将在执行此函数之前导入到文件中


注意:使用Brunch(类似于webpack)作为构建系统。

我不知道
Brunch
做什么,但您可以在导入后创建一个包含组件的对象,并使用该对象检索给定字符串的组件。比如:

import TestClass1 from './TestClass1'
import TestClass2 from './TestClass2'

const componentMap = {
  TestClass1: TestClass1,
  TestClass2: TestClass2
}

// You can just use the map to get the component given the name
const component = componentMap[componentName]

你们的包装系统是什么?网页包?Browserify?你最好重新考虑你的解决方案。新模块系统的全部要点是,它可以进行静态分析。由于您无法动态导入,因此动态实例化没有多大意义。它是否有助于您实现您能实现和不能实现的功能?@RushyPanchal使用Bruch作为构建系统“为什么
eval('TestClass')
不起作用?”-这将在真实的ES6环境中实现。只是导入的变量被传输到相应模块上的属性访问。谢谢!这会奏效的。在给定的
['TestClass1','TestClass2']
中,是否有任何自动定义
组件映射的方法?@AlishanLadhani:No.@AlishanLadhani
const componentMap={TestClass1,TestClass2}@zerkms谢谢。总比复制名字好。但是我必须手写吗?给定任意长度的字符串数组,我可以用某种循环创建
componentMap
。@AlishanLadhani:为什么从字符串开始?从已经显式导入的类开始。当然,如果您是自动生成的,只需以相同的方式生成
componentMap
对象文本即可。