使用require.ensure加载反应组件()

时间:2016-07-15 10:35:55

标签: reactjs webpack

我正在使用gulp webpack流将我的react组件编译成TncComponent.js文件,我将在另一个require文件中.js

组件:

let TncComponent = React.createClass ( {
    render() {
        return (
            <div className="terms-and-conditions">
               hello

            </div>
        )

    }
} );

export default TncComponent;

然后在我的一个.js文件中,我想通过onClick事件渲染组件。

JS档案

export const init = () => {
    let tnc_init = () => {
        require.ensure ( [], ( require )=> {
            let TncComponent = require ( '../TncComponent' );
            let $tnc = $ ( '.tnc' );
            $tnc.on ( 'click', ( e )=> {
                e.preventDefault ();
                console.log ( document.getElementById ( 'tnc-root' ) );
                console.log ( TncComponent );
                ReactDOM.render (
                    React.createElement ( TncComponent, document.getElementById ( 'tnc-root' ) ) );
            } );
        } );

    }
    tnc_init ();
}

但是console.log(TncComponent)会返回一个空对象。

我应该如何装载反应组件?

TncComponent.js

/******/ (function(modules) { // webpackBootstrap
/******/    // The module cache
/******/    var installedModules = {};

/******/    // The require function
/******/    function __webpack_require__(moduleId) {

/******/        // Check if module is in cache
/******/        if(installedModules[moduleId])
/******/            return installedModules[moduleId].exports;

/******/        // Create a new module (and put it into the cache)
/******/        var module = installedModules[moduleId] = {
/******/            exports: {},
/******/            id: moduleId,
/******/            loaded: false
/******/        };

/******/        // Execute the module function
/******/        modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

/******/        // Flag the module as loaded
/******/        module.loaded = true;

/******/        // Return the exports of the module
/******/        return module.exports;
/******/    }


/******/    // expose the modules object (__webpack_modules__)
/******/    __webpack_require__.m = modules;

/******/    // expose the module cache
/******/    __webpack_require__.c = installedModules;

/******/    // __webpack_public_path__
/******/    __webpack_require__.p = "";

/******/    // Load entry module and return exports
/******/    return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {

    module.exports = __webpack_require__(4);


/***/ },
/* 1 */,
/* 2 */,
/* 3 */,
/* 4 */
/***/ function(module, exports) {

    "use strict";

    Object.defineProperty(exports, "__esModule", {
        value: true
    });
    var TncComponent = React.createClass({
        displayName: "TncComponent",
        render: function render() {
            return React.createElement(
                "div",
                { className: "terms-and-conditions" },
                "hello"
            );
        }
    });

    exports.default = TncComponent;

/***/ }
/******/ ]);

0 个答案:

没有答案