我有一个使用React的JS模块
import React from 'react'
我的组件
export default class TaskDetail extends Component {...
我有一个代表代码的字符串:
str=`props => {
return React.createElement(.....
我将在这样的模块JS中使用此代码:
const MyCustomWidget = eval(str)
这样等于写一个:
const MyCustomWidget = props => {
return React.createElement(.....
我使用MyCustomWidget在react-jsonschema-form中创建自定义元素
我的问题是: 在我的模块中我已经导入了React但是我有错误React未定义 那是因为eval的结果还有另一个范围... 如果我写在模块顶部:
window.React = React
有效!但我不想使用
是否可以使用eval并使用我的模块的作用域?我想在不使用window.React = React
的模块中使用导入的React变量可能吗?
答案 0 :(得分:0)
如果要尝试...
const evalInContext = a =>
// eslint-disable-next-line no-new-func
new Function('require', 'const React = require("react");' + a).bind(
null,
require
);
查看他们如何通过react-styleguidist中的实时编辑器评估和运行React代码 https://github.com/styleguidist/react-styleguidist/blob/34f3c83e76/src/client/rsg-components/ReactExample/ReactExample.spec.js
再一次,如果您不能100%相信自己的评价,请不要这样做。