Javascript 如何从';外部';到react应用程序?

Javascript 如何从';外部';到react应用程序?,javascript,reactjs,Javascript,Reactjs,我已使用create react app my app创建了一个react app。我有一个现有的网页,react应用程序附加到html页面中的一个div上——按照正常情况 网页上有一些全局javascript常量const1和const2,这些常量是react应用程序运行所必需的。有没有办法将这些变量传递给react应用程序?结构如下 <script type="text/javascript"> const const1 = "1234"; const const2 =

我已使用
create react app my app
创建了一个react app。我有一个现有的网页,react应用程序附加到html页面中的一个div上——按照正常情况

网页上有一些全局javascript常量
const1
const2
,这些常量是react应用程序运行所必需的。有没有办法将这些变量传递给react应用程序?结构如下

<script type="text/javascript">
  const const1 = "1234";
  const const2 = "5678";
</script>

<script type="text/javascript" src = "/static/react-app.js" ></script>
const const1 = eval("function c1(){console.log(const1);return const1;};c1();");
当变量被重新写入时,不要工作。我试着偷偷摸摸地使用eval,如下所示

<script type="text/javascript">
  const const1 = "1234";
  const const2 = "5678";
</script>

<script type="text/javascript" src = "/static/react-app.js" ></script>
const const1 = eval("function c1(){console.log(const1);return const1;};c1();");

但是eval(和console.log)返回未定义的值。是否有一种方法可以调用react组件,并从外部传递变量?

EcmaScript 6引入了由
let
resp声明的块范围变量和常量<代码>常量

var
对变量的“旧式”声明不同,这类变量的可见性。常数仅限于实际块

因此,常量
const1
(分别为
const2
)的范围仅限于脚本标记内的代码。 要从另一个脚本标记访问
const1
(resp.
const2
),您需要更改其可见性。这可以通过
var
声明或将其值分配给
var
声明的变量来实现

例如:


const const1=“1234”;
const const2=“5678”;
var visibleConst1=const1;

稍后在React应用程序中,您可以从
窗口读取它。visibleConst1
我在这里看到两个选项

  • 将变量分配给
    窗口
    对象
  • 使用环境变量
  • 使用
    窗口
    对象

    要使用
    窗口
    对象,请将变量声明为

    myVar = 'someString'
    

    在这两种情况下,您都可以访问React with
    window.myVar
    中的变量。下面是一个简单的例子:

    类应用程序扩展了React.Component{
    render(){
    返回(
    你好,反应和ES6!
    我们来玩吧。:)

    {window.myVar}

    ); } } ReactDOM.render(,document.getElementById(“app”)
    html,
    身体{
    身高:100%;
    }
    身体{
    显示器:flex;
    证明内容:中心;
    对齐项目:居中;
    字体系列:Helvetica Neue;
    }
    
    window.myVar='someString2'
    
    环境变量会起作用吗?啊!天才-是的,它确实有用!我已经包含了环境变量和另一种方法作为解决方案。这非常强大-谢谢分享!我猜在编译时它会变成一个正式的环境(所以
    window.visibleConst1=const1
    )变量,以便向后兼容?谢谢!我猜
    myVar='someString'
    类似于@Petr建议在ES6中使用
    var
    ?对我来说window.myVar方法不起作用,React没有看到变量这真的很好!使用另一个组件的函数怎么样?@suisied我不久前写了一篇文章-如何使用razor生成的视图中的环境变量(服务器是.net核心)?
    window.myVar = 'someString'