javascript - 在 JavaScript 中动态加载 JSX 文件

标签 javascript reactjs

我正在尝试为 ReactJS 组件实现包装器 API 文件。

例如/js/test.react.js

   /** @jsx React.DOM */
var TESTCLASS = React.createClass({
    render : function() {
        return (
            <div> Test </div>
        );
    }
});

我为此编写了一个包装器 JavaScript 文件:

var testClass = {
    load: function () {
        var script = document.createElement("script");
        script.type = "text/jsx";
        document.head.appendChild(script);
        script.onload = function(){
            React.render(
                <TESTCLASS/>,
                document.body)
        };
        script.src ="./js/test.react.js";
    }
};

然后我可以在第三方 HTML 中使用包装器 API JavaScript。

<html>
<head>
    <title>Hello React</title>
    <script src="http://fb.me/react-0.12.2.js"></script>
    <script src="http://fb.me/JSXTransformer-0.12.2.js"></script>
    <script src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
    <script type="text/jsx" src="test.js"></script>
</head>
<body>

<div id="content"></div>
<script>
    testClass.load();
</script>

</body>
</html>

但是,在我看来/js/test.react.js 不能作为纯 JavaScript 文件动态加载。任何专家都可以向我解释原因并提供适当的解决方案来编写我的包装器 API JavaScript 文件吗?

最佳答案

JSXTransformer*.js 导出一个全局 JSXTransformer 对象,它有一个 exec() 函数,它转译 JSX 然后 eval( )是结果。

您可以先尝试使用脚本内容 onload 运行 JSXTransformer.exec()

此外,仅供引用,@jsx pragma is no longer required从 React 0.12 开始 :)

关于javascript - 在 JavaScript 中动态加载 JSX 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27961150/

相关文章:

javascript - jQuery 在 Blogger 中不起作用

javascript - ng-repeat angular 在遍历数组时将两个元素添加到 div 而不是一个元素

javascript - 如何在使用 Nginx 服务器发送每个请求之前修改 build 文件夹中的 index.html 文件?

html - 我正在尝试在新选项卡中打开此链接,这样用户就不必离开我的网站,但它不适用于 _blank

javascript - 如何为 JavaScript 函数创建文本字段?

javascript - 如何使 JavaScript 函数继承正常工作

javascript - 使用 Mongoose 模式将多个选择元素值的值存储到 MongoDB 中的数组中

javascript - module.exports 中 "this"的范围

reactjs - 如何减少antd Form.Items之间的间距?

javascript - Sails.js - 如何从 Controller 渲染部分?