javascript - 是否可以创建嵌入式 React 应用程序小部件?

标签 javascript wordpress reactjs

我想创建一个可以嵌入到不同 WordPress 网站的小部件。例如构建抵押计算器并添加功能,例如使用输入的信息创建可下载的 PDF。

是否可以用 React 做到这一点?更具体地说,使用 create-react-app 工具。

提前致谢!

最佳答案

可以创建 React 可嵌入小部件,但 create-react-app 不是执行此操作的正确工具。

共享已编译的 js 包并在浏览器中使用它的最简单方法是将其打包为 UMD 格式。 但是,create-react-app doesn't support it .从技术上讲,您可以从 create-react-app 导入一个包作为小部件,但这很痛苦。有些人通过 parsing the application manifest 做到这一点, 和其他 copying the index html content into the destination page .大多数时候,小部件会获取输入数据,您将很难使用这些技术。

我建议您使用另一个支持开箱即用的 UMD 的构建系统,例如 parcel/babel (最简单的一个)、webpack/babel、nwb 等。 下面是react官方关于compile chains的推荐.

这是一个示例 index.js 文件,您可以使用它来声明一个小部件:

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';

window.MyWidget = function(idElement, param1, param2) {
    let config = {param1, param2};
    ReactDOM.render(<App config={config} />, document.getElementById(idElement));
    return this;
}

然后可以将小部件实例化到目标页面中:

<body>
  <div id="react-widget">

  <script src="http://cdm.com/my-react-widget-bundle.js"></script>
  <!-- if bundled separately, load the css -->
  <script>
    window.addEventListener("DOMContentLoaded", function(event) {
      new MyWidget("#react-widget", "toto", "tata");
    });
  </script>
  </div>
</body>

关于javascript - 是否可以创建嵌入式 React 应用程序小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52750875/

相关文章:

javascript - Laravel 5.5 MethodNotAllowedHttpException ajax

javascript - AngularJS 中加载模块失败

wordpress - 单个 git repo 设置跟踪硬盘上的多个位置

reactjs - 如何在 React 中将数组推送到状态?获取 "Invalid attempt to spread non-iterable instance"

javascript - React - 将 ref 传递给 sibling

ASP .NET MVC 布局页面中的 JavaScript/jQuery 无法正常工作

javascript - 让其他扩展处理代理设置

php - Woocommerce php 代码 get_price_html()

wordpress - 检查 wp 循环中的类别

javascript - Redux/Java:管理标准化数据和每个实体的多个模型表示