您如何在 Rails 应用程序中引用第 3 方 React 组件?

How do you reference 3rd party react components in a Rails app?

我正在使用 react-rails gem. This means all assets flow through the rails asset pipeline. In order to access 3rd party javascript libraries, I've been taking advantage of rails-assets.org 构建一个应用程序,它将 javascript 软件包从 bower 捆绑到您的 rails 环境中。大多数包都可以直接在您的 javascript 代码中调用。

所以如果你添加包,使用 marked markdown 库,你可以像这样包含它:

gem 'rails-assets-marked', source: 'https://rails-assets.org'

然后可以从 rails 应用中的任何 js 文件轻松调用它,例如:

console.log(marked('I am using __markdown__.'));

但是,你如何使用不是函数而是反应组件的包?在节点应用程序中,您将像下面这样使用 require() 。这是 react-clipboard:

的示例
var Clipboard = require("react-clipboard");

var App = React.createClass({

  render: function() {

    return (
      <div>
        <Clipboard value='some value' onCopy={some function} />
      </div>
    );
  },

但是,您如何在 Rails 应用程序中完成此操作?

即使包包含在 rails 资产管道中,反应组件剪贴板在 JSX 中不可用。如何使它可用?

无法仅使用 rails 直接完成此操作。

为了能够使用 require("react-clipboard"),一种解决方案(侵入性较小)是结合使用 rails、react-rails 和 browserify 如此处解释:

http://collectiveidea.com/blog/archives/2016/04/13/rails-react-npm-without-the-pain/

这里

https://gist.github.com/oelmekki/c78cfc8ed1bba0da8cee

我没有重新粘贴整个代码示例,因为它相当长并且将来容易更改