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

时间:2016-08-25 23:45:37

标签: ruby-on-rails reactjs react-rails

我正在使用react-rails gem构建应用。这意味着所有资产都流经rails asset pipeline。为了访问第三方javascript库,我一直在利用rails-assets.org将来自bower的javascript包捆绑到你的rails环境中。大多数软件包都可以直接在您的javascript代码中调用。

因此,如果您添加包,请使用marked降价库,您可以将其包括在内:

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中不可用。如何让它可用?

1 个答案:

答案 0 :(得分:1)

没有办法直接使用rails完成此操作。

为了能够使用create<>() const,一种解决方案(较少侵入性)将使用 rails,react-rails和browserify 的组合,如下所述:

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

在这里

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

我没有重新粘贴整个代码示例,因为它很长很容易在将来发生变化