虽然我使用create-react-app
创建了一个功能正常的反应应用程序,但我是一个相对较新的反应者。
反应的一个卖点似乎是你可以逐步而不是一次性地迁移代码。我现在正在迁移现有的Web应用程序,并尝试查看是否可以在create-react-app生态系统中以最少的修改来运行它;第2步将反应它。我被困在第1步。(我想我已经管理了第0步 - 让它完全编译 - 虽然这需要很长时间。)
我已将create-react-app
index.html
替换为我自己的index.html
,将create-react-app
index.js
替换为我自己的主js文件,重命名为{{1 }}。过去,我的主文件加载了来自index.js
的{{1}}标记,其所有功能都进入了全局范围。显然现在他们没有进入全球范围。
在<script>
中,我有:
index.html
在index.html
中,我有:
<button type="button" id="connectButton" class="btn btn-success" onclick="connect()">
Log on
</button>
过去单击该按钮会调用该函数,因为它位于全局范围内。现在,单击该按钮会生成“index.js
”,因为它显然不会进入全局范围。
有人低估了我对这个问题的原始版本,也许是因为我问的是一些不是“做事的反应方式”。我完全意识到这一点,但让人们做出“反应方式”的方法是向他们展示他们可以逐步迁移代码库的方式。所以我无法想象我是唯一一个遇到这个问题的人。不过,我在网上搜索的尝试并没有提出任何帮助。
附录:我看到我可以通过在函数定义之后插入function connect() {
...
}
来解决这个问题,函数定义将它放在全局范围内。我将补充一点作为这个问题的答案,但也许有人有更好的解释或解决方法,在这种情况下我会接受他们的答案。谢谢。
答案 0 :(得分:0)
正如我在问题的编辑版本中所说,在函数定义之后插入window.connect = connect;
会将其置于全局范围内,因此似乎是一种有效的解决方法。