2017-11-28 25 views
6

मेरे पास प्रतिक्रिया के साथ बनाया गया एक वेब-ऐप है। इस ऐप में मेरे पास पुराने संस्करण से jQuery कोड वाले कुछ पेज भी हैं। अभी यह सर्वर पक्ष प्रदान किया गया है और मुझे अपने स्वयं के नेविगेशन मेनू के साथ स्क्रिप्ट-टैग में jQuery और jQuery-UI कोड के साथ संपूर्ण ejs फ़ाइल लोड करना होगा। (JQuery कोड की लगभग 1000 पंक्तियां)प्रतिक्रिया घटक में jQuery

इसका मतलब है कि मुझे इन jQuery पृष्ठों के लिए एक और एनवी-मेन्यू बनाना है।

मैं अपने "सामग्री div" में इस jQuery निर्भर कोड को प्रस्तुत करना चाहता हूं, इसलिए मैं अभी भी प्रतिक्रिया राउटर का उपयोग कर प्रतिक्रिया मेनू का उपयोग कर सकता हूं। मैं इसे एक घटक की तरह प्रस्तुत करना चाहता हूं। लेकिन मुझे नहीं पता कि यह सबसे अच्छा समाधान है या नहीं।

मैं यह कैसे किया जा सकता है के कई उदाहरण पढ़ा है, लेकिन मैं नहीं जानता कि जो उनमें से लिए जाने के लिए और मैं उन्हें काम

की तरह इस उदाहरण में दिखाया गया बनाने के लिए strugling किया गया है: Adding script tag to React/JSX यह उदाहरण कहते हैं componentWillMount

में या आयात के साथ और स्क्रिप्ट टैग इस उदाहरण की तरह की आवश्यकता होती है: How to add script tag in React/JSX file?

मैं इन समाधानों NPM के माध्यम से jQuery की स्थापना के बिना काम नहीं कर सके।

मैंने अभी तक एनपीएम के माध्यम से jQuery स्थापित नहीं किया है क्योंकि मुझे पता है कि यह मेरे आवेदन के बाकी हिस्सों के लिए मेरे बंडल आकार को प्रभावित करेगा और मैं केवल अपने कुछ पृष्ठों के लिए jQuery का उपयोग कर रहा हूं। उपयोगकर्ता को शेष ऐप के लिए jQuery को लोड करने की ज़रूरत नहीं है

इस तरह की स्थिति में आप क्या सलाह देते हैं? प्रदर्शन और उपयोगकर्ता अनुभव के लिए सबसे अच्छा समाधान क्या है?

+0

क्या आपको इन jQuery निर्भर पृष्ठों के साथ दो तरह के संचार की आवश्यकता है? यदि नहीं, तो उन्हें थोड़ा सा क्यों न पड़े, और उन्हें आईफ्रेम के माध्यम से लोड करें। शायद सबसे अधिक प्रदर्शन करने वाला समाधान नहीं हो सकता है, लेकिन यह सबसे सरल है। – asosnovsky

+0

मुझे प्रतिक्रिया ऐप से कुछ वैश्विक चर का उपयोग करने की आवश्यकता है, लेकिन आउटपुट डेटाबेस में AJAX के माध्यम से संग्रहीत किया जाता है और node.js – Koiski

+0

में लिखे गए एपीआई-एंडपॉइंट्स बीटीडब्ल्यू एप्लिकेशन jquery-ui के साथ बहुत सारे ड्रैग और ड्रॉप इंटरैक्शन का उपयोग करता है मुझे पता है कि iframes – Koiski

उत्तर

5

react-async-component पर एक नज़र डालें। अलग फ़ाइल में

// SomethingWithJquery.js 
import React, {Component} from 'react' 
import $ from 'jquery' 

class SomethingWithJquery extends Component { 

    constructor(props) { 
    super(props) 
    } 

    render() { 
    // ... as much jquery mess as you need 
    } 

} 

export default SomethingWithJquery 

और आवरण:: अपने घटक की तरह कुछ लग सकता है

// SomethingWithJquery.async.js 
import { asyncComponent } from 'react-async-component'; 

export default asyncComponent({ 
    resolve:() => System.import('./SomethingWithJquery') 
}); 

से आप इसका इस्तेमाल कर सकते हैं नियमित घटक प्रतिक्रिया के रूप में, प्रतिक्रिया-async घटक अलग .js में पूरे घटक लोड होगा हुड के तहत उद्देश्य पर फ़ाइल।

+0

हो सकता है वादा करता है, लेकिन जिस तरह से आप jQuery आयात करते हैं, इसका मतलब है कि मुझे jQuery को एनपीएम के माध्यम से स्थापित करना है जिसका अर्थ है कि jQuery वास्तव में मेरी बंडल फ़ाइल को प्रभावित करेगा? – Koiski

+0

@ कोइस्की जहां तक ​​मुझे पता नहीं है, इसे घटक के साथ अलग खंड में jquery जोड़ना चाहिए। तो jquery केवल तभी लोड किया जाएगा जब उपयोगकर्ता एक पृष्ठ खोलता है जिसमें यह async घटक होता है। –

+0

इस दृष्टिकोण के साथ, मुझे चिंता है कि jQuery के साथ सीधे डोम-मैनिपुलेशन वर्चुअल डीओएम प्रतिक्रिया कार्यों को खराब कर देगा। इसके बारे में कोई अंतर्दृष्टि? – Koiski

संबंधित मुद्दे