Как импортировать компонент на основе JavaScript или JSX в React.rb, чтобы он был доступен в ruby?

Использование примера, приведенного для React-Bootstrap и response.rb, работает отлично, но я пытаюсь заставить работать компонент NPN под названием React-TimeAgo, и я заблудился.

Вот что я сделал:

В index.js (для Webpack, чтобы импортировать его в пакет webpack):

window.bs = require('react-bootstrap')
window.timeago = require('react-timeago')

В фактическом component.rb у меня есть это:

class Rb < React::NativeLibrary
  imports 'bs'
end

class TimeAgo < React::NativeLibrary
  imports 'timeago'
end

Тогда ссылки на компоненты Bootstrap работают отлично:

Rb.Button(bsStyle: :primary) <- works as expected

Но мне не удается вытащить что-нибудь из оболочки TimeAgo:

TimeAgo.new(date: "Aug 29, 2014") {} <- just does nothing
TimeAgo(date: "Aug 29, 2014") {}     <- method undefined

Что я делаю неправильно? Вся помощь приветствуется!

1 ответ

Я нашел обходной путь к этому, но это не так уж и красиво. Хотелось бы найти лучшее решение!

class TimeAgo < React::Component::Base
   after_mount do
      `React.render(React.createElement(window.timeago,
        {date: 'apr 7, 2016'}),
        document.getElementById('something_unique')
       );`
   end

   def render
      span(id: "something_unique") { }
   end
 end

Конечно, вам нужно убедиться, что идентификатор промежутка уникален, и вы указали дату в качестве реквизита, но я оставил это для краткости.

Другие вопросы по тегам