2016-08-25 4 views
1

Я создаю приложение, используя драгоценный камень react-rails. Это означает, что все активы проходят через rails asset pipeline. Чтобы получить доступ к сторонним библиотекам javascript, я воспользовался rails-assets.org, который связывает пакеты javascript с беседкой в ​​вашей среде рельсов. Большинство пакетов можно просто вызвать непосредственно в вашем javascript-коде.Как вы ссылаетесь на сторонние компоненты реакции в приложении Rails?

Так что, если вы добавите пакет, возьмите marked библиотеку уценки, вы включаете это нравится:

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

А потом можно легко вызвать из любого файла 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?

Несмотря на то, что пакет включен в конвейер ресурсов рельсов, компонент-ответчик не доступен в JSX. Как сделать его доступным?

ответ

1

Невозможно выполнить это непосредственно с использованием рельсов.

Для того, чтобы иметь возможность использовать require("react-clipboard"), одно решение (менее навязчивым) было бы использовать комбинацию рельсов, реагируют поручни и browserify, как описано здесь:

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

и здесь

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

Я не повторно вставить весь пример кода, как это довольно долго и склонны к изменениям в FUTUR e

+0

Спасибо, что решили это для меня @borisrorsvort! :) –

+0

Добро пожаловать :) – borisrorsvort