Ruby on Rails
हाइपरलूप का उपयोग करके रेल के साथ React.js को एकीकृत करना
खोज…
परिचय
इस विषय को React.js एकीकृत कवर रेल उपयोग करने के साथ Hyperloop मणि
यहां कवर नहीं किए गए अन्य दृष्टिकोण प्रतिक्रिया-रेल या प्रतिक्रिया_ऑन_रिल्स रत्नों का उपयोग कर रहे हैं।
टिप्पणियों
घटक कक्षाएं केवल समकक्ष जावास्क्रिप्ट घटक कक्षाएं उत्पन्न करती हैं।
आप अपने रूबी घटक वर्गों से सीधे जावास्क्रिप्ट घटकों और पुस्तकालयों तक भी पहुँच सकते हैं।
हाइपरलूप व्यू सर्वर साइड को "प्रीरेन्डर" करेगा ताकि आपका प्रारंभिक दृश्य ईआरबी या एचएएमएल टेम्प्लेट की तरह लोड हो जाए। एक बार क्लाइंट रिएक्शन पर लोड होने के बाद, उपयोगकर्ता द्वारा प्राप्त किए गए इनपुट, HTTP रिक्वेस्ट या इनकमिंग वेब सॉकेट डेटा के कारण राज्य में होने वाले परिवर्तन को DOM अपडेट कर देगा।
कंपोनेंट्स के अलावा, हाइपरलूप के पास साझा राज्य का प्रबंधन करने के लिए स्टोर हैं, आइसोमॉर्फिक बिजनेस लॉजिक को इनकैप्सुलेट करने के लिए ऑपरेशन, और मॉडल जो मानक एआर सिंटैक्स का उपयोग करके क्लाइंट पर आपके ActiveRecord मॉडल को सीधे एक्सेस देते हैं।
अधिक जानकारी यहाँ: http://ruby-hyperloop.io/
अपने रेल एप्लिकेशन के लिए एक सरल प्रतिक्रिया घटक (रूबी में लिखा गया) जोड़ना
- हाइपरलूप मणि को अपनी रेल (4.0 - 5.1) मणिफाइल में जोड़ें
-
bundle install
- हाइपरलूप मेनिफ़ेस्ट को application.js फ़ाइल में जोड़ें:
// app/assets/javascripts/application.js ... //= hyperloop-loader
- अपने प्रतिक्रिया घटक बनाएं, और उन्हें
hyperloop/components
निर्देशिका में रखें# app/hyperloop/components/hello_world.rb class HelloWorld < Hyperloop::Component after_mount do every(1.second) { mutate.current_time(Time.now) } end render do "Hello World! The time is now: #{state.current_time}" end end
- घटक केवल विचारों की तरह काम करते हैं। वे एक नियंत्रक में
render_component
विधि का उपयोग करके "माउंटेड" हैं:# somewhere in a controller: ... def hello_world render_component # renders HelloWorld based on method name end
घटक मापदंडों की घोषणा (सहारा)
class Hello < Hyperloop::Component # params (= react props) are declared using the param macro param :guest render do "Hello there #{params.guest}" end end # to "mount" Hello with guest = "Matz" say Hello(guest: 'Matz') # params can be given a default value: param guest: 'friend' # or param :guest, default: 'friend'
एचटीएमएल टैग
# HTML tags are built in and are UPCASE class HTMLExample < Hyperloop::Component render do DIV do SPAN { "Hello There" } SPAN { "Welcome to the Machine!" } end end end
इवेंट हैंडलर
# Event handlers are attached using the 'on' method class ClickMe < Hyperloop::Component render do DIV do SPAN { "Hello There" } A { "Click Me" }.on(:click) { alert('you did it!' } end end end
राज्य अमेरिका
# States are read using the 'state' method, and updated using 'mutate' # when states change they cause re-render of all dependent dom elements class StateExample < Hyperloop::Component state count: 0 # by default states are initialized to nil render do DIV do SPAN { "Hello There" } A { "Click Me" }.on(:click) { mutate.count(state.count + 1) } DIV do "You have clicked me #{state.count} #{'time'.pluralize(state.count)}" end unless state.count == 0 end end end
ध्यान दें कि राज्यों को हाइपरलूप :: स्टोर्स के घटकों के बीच साझा किया जा सकता है
कॉलबैक
# all react callbacks are supported using active-record-like syntax class SomeCallBacks < Hyperloop::Component before_mount do # initialize stuff - replaces normal class initialize method end after_mount do # any access to actual generated dom node, or window behaviors goes here end before_unmount do # any cleanups (i.e. cancel intervals etc) end # you can also specify a method the usual way: before_mount :do_some_more_initialization end