दिलचस्प पोस्ट
क्यों प्रदर्शन के लिए वजन नीडि़त खराब है? वैकल्पिक? django orm, कैसे निष्पादित क्वेरी को देखने के लिए (या लॉग)? एएसपी.नेट में सत्र का समय समाप्त सी = अर्थ में '=>' सिंटैक्स क्या करता है? प्रतिबिंब के माध्यम से वैकल्पिक पैरामीटर के साथ तरीकों को शामिल करना सी # स्विच स्टेटमेंट सीमाएं – क्यों? सी ++: क्या regex पुस्तकालय मुझे इस्तेमाल करना चाहिए? पायथन में एकाधिक विंडो को संभाल लें एक चुटकी का पता लगाने के लिए सबसे सरल तरीका AngularJS में संसाधित करने के लिए $ संसाधन `मिल` कैसे काम करता है? सोप बनाम आराम (अंतर) मेरी नियमित अभिव्यक्ति बहुत अधिक मेल खाता है मैं इसे सबसे छोटी संभव पैटर्न से मेल करने के लिए कैसे कह सकता हूँ? मैं हमेशा टीएफएस में एक विशिष्ट फाइल की जांच कैसे रोक सकता हूं अपवाद निपटने का उपयोग कब और कैसे किया जाना चाहिए? टीएसक्यूएल का उपयोग कर डेटाबेस में सभी तालिकाओं की सूची कैसे प्राप्त करूं?

रोबोट-राउटर के साथ ब्राउज़र में कैसे रोकें?

रिएक्शन-राउटर का उपयोग करते समय ब्राउज़र के पता बार में दिखने से /#/ को रोकने का कोई भी तरीका? यह ReactJS के साथ है अर्थात् एक नया मार्ग पर जाने के लिए लिंक पर क्लिक करना localhost:3000/#/ पता चलता है localhost:3000/#/ या localhost:3000/#/about मार्ग के आधार पर

वेब के समाधान से एकत्रित समाधान "रोबोट-राउटर के साथ ब्राउज़र में कैसे रोकें?"

यूआरएल मैपिंग स्कीम के लिए रूट सेट करने का सही तरीका, रोटोटर के 1, 2 और 3 के संस्करणों के लिए, <Router> के history पैरामीटर में इतिहास के कार्यान्वयन से गुजर रहा है। इतिहास दस्तावेजों से :

संक्षेप में, एक इतिहास जानता है कि परिवर्तनों के लिए ब्राउजर के एड्रेस बार को कैसे सुनना और यूआरएल को किसी स्थान ऑब्जेक्ट में पार्स करना है जो राउटर मार्गों से मेल खाने और घटकों का सही सेट प्रदान करने के लिए उपयोग कर सकता है।

संस्करण 2 और 3

प्रतिक्रिया-राउटर 2 और 3 में, आपका रूट कॉन्फ़िगरेशन कोड ऐसा कुछ दिखाई देगा:

 import { browserHistory } from 'react-router' ReactDOM.render (( <Router history={browserHistory} > ... </Router> ), document.body); 

संस्करण 1

संस्करण 1.x में, आप इसके बजाय निम्नलिखित का उपयोग करेंगे:

 import createBrowserHistory from 'history/lib/createBrowserHistory' ReactDOM.render (( <Router history={createBrowserHistory()} > ... </Router> ), document.body); 

स्रोत: संस्करण 2.0 अपग्रेड मार्गदर्शिका

संस्करण 4

आगामी संस्करण के लिए प्रतिक्रिया-राउटर के 4, सिंटैक्स ने एक बड़ा सौदा बदल दिया है और यह आवश्यक है कि BrowserRouter को राउटर रूट टैग के रूप में उपयोग करना है।

 import BrowserRouter from 'react-router/BrowserRouter' ReactDOM.render (( <BrowserRouter> ... <BrowserRouter> ), document.body); 

स्रोत का रूफर संस्करण 4 डॉक्स

 Router.run(routes, Router.HistoryLocation, function (Handler) { React.render(<Handler/>, document.body); }); 

वर्तमान संस्करण 0.11 और आगे के लिए, आपको Router.HistoryLocation जोड़ने की आवश्यकता है। <Routes> अब बहिष्कृत कर रहे हैं 0.12.x इतिहास स्थान के कार्यान्वयन के लिए अपग्रेड मार्गदर्शिका देखें ।

यदि आपको IE8 का समर्थन करने की आवश्यकता नहीं है, तो आप ब्राउज़र इतिहास का उपयोग कर सकते हैं और प्रतिक्रिया-राउटर window.pushState का उपयोग करेगा। window.pushState को हैश सेट करने के बजाय

यह वास्तव में ऐसा करने के लिए रीएक्ट रूटर के संस्करण पर निर्भर करता है जिसे आप उपयोग कर रहे हैं:

आप वास्तव में इसे पूरा करने के लिए .htaccess का उपयोग कर सकते हैं। सामान्य रूप से क्वेरी स्ट्रिंग सीमांकक की ब्राउज़र की जरूरत है ? या # यह निर्धारित करने के लिए कि क्वेरी स्ट्रिंग कहाँ शुरू होती है और डायरेक्टरी पथ समाप्त होती है। अंतिम परिणाम जो हम चाहते हैं www.mysite.com/dir इसलिए हमें इस समस्या को पकड़ने की ज़रूरत है इससे पहले कि वेब सर्वर उस निर्देशिका के लिए खोज करता है जिसे लगता है कि हमने /dir लिए पूछा था। इसलिए हम परियोजना की जड़ में एक .htaccess फ़ाइल .htaccess

  # Setting up apache options AddDefaultCharset utf-8 Options +FollowSymlinks -MultiViews -Indexes RewriteEngine on # Setting up apache options (Godaddy specific) #DirectoryIndex index.php #RewriteBase / # Defining the rewrite rules RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^.*$ ./index.html 

इसके बाद आप query.pathname के साथ क्वेरी पैरामीटर प्राप्त करते हैं

यदि आप चाहते हैं और यूआरएल और ब्राउज़र इतिहास में हेरफेर करते हैं, तो आप प्रतिक्रिया मार्गों का उपयोग कर सकते हैं। उम्मीद है कि यह किसी को मदद करता है …

इतिहास पैकेज स्थापित करें

 npm install history --save 

इतिहास से अगला आयात बनाएँइतिहास और उपयोग करेंबसेनाम

 import { createHistory, useBasename } from 'history'; ... const history = useBasename(createHistory)({ basename: '/root' }); 

अगर आपका ऐप यूआरएल http://www.example.com/myApp है, तो / रूट होना चाहिए / myApp

राउटर में इतिहास वैरिएबल पास करें

 render(( <Router history={history}> ... </Router> ), document.getElementById('example')); 

अब आपके सभी लिंक टैग के लिए सभी पथों के सामने "/" संलग्न करें

 <Link to="/somewhere">somewhere</Link> 

समाधान की प्रेरणा रिएक्ट-राउटर उदाहरण से आई थी, जो कि दुर्भाग्य से, उनके एपीआई में ठीक से प्रलेखित नहीं थे।

हैश के बाद प्रदर्शित करने के तरीके को संभालने का एक और तरीका (यदि आप पुशस्टेट का उपयोग न करें तो!) अपने कस्टम स्थान को बनाने और इसे रीट्रॉटर निर्माण पर लोड करना है।

उदाहरण के लिए, यदि आप क्रॉलिंग के लिए Google चश्मा के साथ हैशबैंग यूआरएल (इतना #!) चाहते हैं, तो आप एक हॅशबैंग लोકેશન.जेएस फ़ाइल बना सकते हैं, जो मुख्य रूप से मूल हैश लॉकेशन की प्रतिलिपि बनाते हैं जैसे:

 'use strict'; var LocationActions = require('../../node_modules/react-router/lib/actions/LocationActions'); var History = require('../../node_modules/react-router/lib/History'); var _listeners = []; var _isListening = false; var _actionType; function notifyChange(type) { if (type === LocationActions.PUSH) History.length += 1; var change = { path: HashbangLocation.getCurrentPath(), type: type }; _listeners.forEach(function (listener) { listener.call(HashbangLocation, change); }); } function slashToHashbang(path) { return "!" + path.replace(/^\//, ''); } function ensureSlash() { var path = HashbangLocation.getCurrentPath(); if (path.charAt(0) === '/') { return true; }HashbangLocation.replace('/' + path); return false; } function onHashChange() { if (ensureSlash()) { // If we don't have an _actionType then all we know is the hash // changed. It was probably caused by the user clicking the Back // button, but may have also been the Forward button or manual // manipulation. So just guess 'pop'. var curActionType = _actionType; _actionType = null; notifyChange(curActionType || LocationActions.POP); } } /** * A Location that uses `window.location.hash`. */ var HashbangLocation = { addChangeListener: function addChangeListener(listener) { _listeners.push(listener); // Do this BEFORE listening for hashchange. ensureSlash(); if (!_isListening) { if (window.addEventListener) { window.addEventListener('hashchange', onHashChange, false); } else { window.attachEvent('onhashchange', onHashChange); } _isListening = true; } }, removeChangeListener: function removeChangeListener(listener) { _listeners = _listeners.filter(function (l) { return l !== listener; }); if (_listeners.length === 0) { if (window.removeEventListener) { window.removeEventListener('hashchange', onHashChange, false); } else { window.removeEvent('onhashchange', onHashChange); } _isListening = false; } }, push: function push(path) { _actionType = LocationActions.PUSH; window.location.hash = slashToHashbang(path); }, replace: function replace(path) { _actionType = LocationActions.REPLACE; window.location.replace(window.location.pathname + window.location.search + '#' + slashToHashbang(path)); }, pop: function pop() { _actionType = LocationActions.POP; History.back(); }, getCurrentPath: function getCurrentPath() { return decodeURI( // We can't use window.location.hash here because it's not // consistent across browsers - Firefox will pre-decode it! "/" + (window.location.href.split('#!')[1] || '')); }, toString: function toString() { return '<HashbangLocation>'; } }; module.exports = HashbangLocation; 

स्लैशटोहाहबैंग फ़ंक्शन को नोट करें।

तो आप को अभी करना होगा

 ReactRouter.create({location: HashbangLocation}) 

और बस 🙂