Опора render
предоставляет функциональный компонент. Функциональный компонент - это функция, такая, что аргументы являются реквизитами, а возвращаемое значение является компонентом, который должен быть визуализирован.
Для этого нам нужно преобразовать вашу опору для рендера в опал.
DIV do
P { "Formatted: #{native_props.formatted}" }
P { "Hours: #{native_props.hours}" }
P { "Minutes: #{native_props.minutes}" }
P { "Seconds: #{native_props.seconds}" }
end.to_n
Здесь есть одна ошибка. Во-первых, props
передается как объект javascript. Нам нужно, чтобы это был рубин, поэтому мы завернем его в Native
.
На втором этапе Hypertack предоставляет класс секундомера.
В app / javascript / packs отредактируйте hyperstack.js
, чтобы включить реактивный секундомер.
import ReactStopwatch from 'react-stopwatch';
global.ReactStopwatch = ReactStopwatch;
Теперь вы можете использовать Stopwatch
в своем коде.
Сложив это вместе, вы получите:
class Stopwatch < HyperComponent
render do
ReactStopwatch(seconds: 0, minutes: 0, hours: 0, limit: "00:00:10").on("<render>") do |props|
DIV do
P { "Formatted: #{props.formatted}" }
P { "Hours: #{props.hours}" }
P { "Minutes: #{props.minutes}" }
P { "Seconds: #{props.seconds}" }
end.to_n
end
end
end