【问题标题】:How to build react component for non react application如何为非反应应用程序构建反应组件
【发布时间】:2018-07-11 12:57:20
【问题描述】:

我使用 create-react-app 项目构建了一个反应应用程序。现在我不得不在非反应应用程序中使用这个项目中的一些组件。所以我必须将这些组件单独导出到单独的 js 文件中,这些文件可以通过引用我的 js 文件和 react 库在普通 JS 应用程序(没有 webpack)中使用。

我尝试从 create-react-app 中弹出并将我的组件和相关文件导出为单独的块。然后我通过使用“脚本”标签的直接引用将这些组件包含在目标应用程序中。之后我不确定如何挂载我的组件,因为我的组件将被一些与 webpacks 相关的导出语句包装,并且在目标应用程序中我没有使用 webpack 或需要 js。

我用谷歌搜索并没有发现任何与我的案例相关的信息。有人可以对这个问题有所了解吗?

[更新]

当我说非反应应用程序时,这意味着当前应用程序没有使用 React 或 webpack。但是,我当然会在要包含组件的页面中直接使用脚本标记包含反应库。

这个问题主要与 Webpack 相关,而不是 React。我想获取包含在 webback 相关功能下的组件的参考。如果我能得到那个参考,那么我就知道如何使用 React 库来渲染组件了。

【问题讨论】:

  • "非反应应用程序":在 Angular 或 vue 中,AFAIK 无法直接将其渲染到 dom,而无需反应或任何其他从一个转换到另一个的框架。

标签: reactjs webpack


【解决方案1】:

window 可用于存储您希望在导入脚本之间共享的变量。

虽然,重要的是要注意不要污染命名空间。

请参阅下面的实际示例。

// Window.components.
window.components = window.components || {}

// Component.
window.components.Component = props => <div>React Component</div>

// Mount.
ReactDOM.render(<window.components.Component/>, document.querySelector('#root'))

// Window Proof.
console.log(window.React, window.ReactDOM)
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div>
  Regular HTML
  <div id="root"></div>
</div>

【讨论】:

  • 我知道如何使用 ReactDOM.render 函数挂载组件。我的问题是如何获得组件的引用?在您的情况下,您使用的是 const Component = ******。对我来说,我必须从我的 js 文件中获取我的组件,该文件包含一些与 webpack 相关的代码。这更多是关于 webpack 的问题,而不是反应。抱歉,如果我最初的问题不清楚。
  • 一种解决方案可能是将要更广泛地访问的变量绑定到window@ShridharL
  • 在角度你可以得到直接的孩子。 Angular 的包装组件可用并且编写起来非常简单。
  • @ArmanCharan - 感谢您的回复。但我期待有一些更好、更直接的方法,因为这个组件将与其他团队共享以供他们使用。这些团队也不会使用 NPM。所以基本上他们需要一种正确的方法来包含我的 js 文件并使用我的组件。事实上,我能够使用名为 export 的全局变量来引用我的组件。但我仍然认为这不是一种合适的做事方式。他们应该是更好的方法。
  • 利用window 是一种相当标准的策略。上例中的ReactReactDOM 脚本绑定到window。诀窍是将它们整齐地打包@ShridharL
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-09
  • 2018-08-12
  • 2018-10-26
  • 2020-11-27
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多