reactjs - Webpack React 库到窗口中的全局变量

标签 reactjs webpack

我使用 webpack 来构建 React 组件。 这是 JSX 文件:

// index.js
var React = require('react');
var ReactDOM = require('react-dom');
var renderHelloComponnet = function(id) {
    ReactDOM.render(
      <h1>Hello, World!</h1>,
      document.getElementById(id)
    );
}

然后,我想在html中调用函数renderHelloComponnet 我有 webpack 的配置文件:

module.exports = {
    entry: {
        index: './src/index.js'
    },       
    output: {
        path: __dirname + '/build',
        filename: '[name].bundle.js',
        libraryTarget: "var",
        library: ["ABC"],
    },    
    resolve: {
        extensions: ['', '.js', '.jsx']
    },    
    module: {
        loaders: [
            { 
                test: /\.jsx?$/, 
                loader: 'babel-loader',
                exclude: /node_modules/,
                query: { presets:['react'] }
            }
        ]
    }
}

但是我无法在 html 中渲染我的组件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello React!</title>
    <script type="text/javascript" src="./build/index.bundle.js"></script>

  </head>
  <body>
    <div id="example"></div>
    <script type="text/javascript">
        ABC.renderHelloComponnet('example');
    </script>
  </body>
</html>

我收到错误:TypeError:ABC.renderHelloComponnet 不是函数

最佳答案

您在 module.exports 中导出的内容就是您在 library var 中获得的内容。因此,如果在 index.js 中导出 renderHelloComponent:

module.exports = renderHelloComponent;

然后在您的 ABC 变量中您将获得以下函数:

<script type="text/javascript">
    ABC('example');
</script>

如果您希望您的library var 实际上具有renderHelloComponent 方法,您可以导出一个包含此函数的对象:

module.exports = {
    renderHelloComponent: renderHelloComponent
}

然后您将能够执行以下操作:

<script>
    ABC.renderHelloComponent('example');
</script>

关于reactjs - Webpack React 库到窗口中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35078504/

相关文章:

javascript - 未找到 Webpack block

javascript - 我如何更改 eslint 解析设置

reactjs - 未捕获类型错误 : import_stream. 默认值。使用包 @octokit/core 未定义可读

javascript - 如何根据 redux 状态使用相同的 react-router 路由绑定(bind)不同的 react 组件?

reactjs - 逻辑理解react hooks,useState和useEffect(或状态和生命周期方法)之间的区别

javascript - 阵列没有看到新的更新

Angular CLI 7 Webpack Bundle Analyzer 模块串联

javascript - 如何在 react.js 中动态切换 'className'?

webpack - 如何获取字符串形式的 JSX?

javascript - 找不到模块 'babel-core' 中的错误。使用 react.js、webpack 和 express 服务器