क्या कोई अंतर बता सकता है
<Route exact path="/" component={Home} />
तथा
<Route path="/" component={Home} />
मैं 'सटीक' का अर्थ नहीं जानता
क्या कोई अंतर बता सकता है
<Route exact path="/" component={Home} />
तथा
<Route path="/" component={Home} />
मैं 'सटीक' का अर्थ नहीं जानता
जवाबों:
इस उदाहरण में, वास्तव में कुछ भी नहीं। exact
परम खेलने में आता है आप समान नाम है जो एक से अधिक पथ है जब:
उदाहरण के लिए, कल्पना करें कि हमारे पास एक Users
घटक था जो उपयोगकर्ताओं की एक सूची प्रदर्शित करता था। हमारे पास एक CreateUser
घटक भी है जो उपयोगकर्ताओं को बनाने के लिए उपयोग किया जाता है। के लिए url को CreateUsers
नेस्टेड किया जाना चाहिए Users
। तो हमारा सेटअप कुछ इस तरह दिख सकता है:
<Switch>
<Route path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
अब यहाँ समस्या है, जब हम http://app.com/users
राउटर पर जाते हैं, हमारे सभी परिभाषित मार्गों से गुजरेंगे और एफआईआरएसटी मैच को वापस कर देंगे। तो इस मामले में, यह Users
पहले मार्ग ढूंढेगा और फिर इसे वापस करेगा। सब अच्छा।
लेकिन, अगर हम गए, तो http://app.com/users/create
यह फिर से हमारे सभी परिभाषित मार्गों से गुजरेगा और एफआईआरएसटी मैच को लौटाएगा। प्रतिक्रिया राउटर आंशिक मिलान करता है, इसलिए /users
आंशिक रूप से मेल खाता है /users/create
, इसलिए यह गलत तरीके Users
से फिर से मार्ग लौटाएगा !
exact
परम किसी मार्ग के लिए आंशिक मेल अक्षम करता है और यकीन है कि यह केवल मार्ग लौटाता है यदि पथ वर्तमान यूआरएल के लिए एक सटीक मिलान है बनाता है।
तो इस मामले में, हमें exact
अपने Users
मार्ग में जोड़ना चाहिए ताकि यह केवल पर मेल खाए /users
:
<Switch>
<Route exact path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
</Switch>
exact
मेरी राय में डिफ़ॉल्ट होना चाहिए
/admin//users
व्यवस्थापक घटक में है, और /admin/users/create
रूट घटक में ??? वर्तमान में मेरे पास यह स्थिति है और विशिष्ट exact
समाधान ठीक से काम नहीं करता है।
संक्षेप में, यदि आपके पास Switch
इस तरह के घटक के साथ संलग्न, आपके ऐप के मार्ग के लिए कई मार्ग निर्धारित हैं ;
<Switch>
<Route exact path="/" component={Home} />
<Route path="/detail" component={Detail} />
<Route exact path="/functions" component={Functions} />
<Route path="/functions/:functionName" component={FunctionDetails} />
</Switch>
फिर आपको exact
कीवर्ड को रूट पर रखना होगा जो कि रास्ता है, दूसरे रूट के रास्ते से भी शामिल है। उदाहरण के लिए होम पाथ /
को सभी रास्तों में शामिल किया गया है, इसलिए इसे exact
दूसरे रास्तों से अलग करने के लिए कीवर्ड की आवश्यकता होती है जो इसके साथ शुरू होते हैं /
। कारण भी /functions
पथ के समान है । जैसे आप किसी अन्य मार्ग पथ उपयोग करना चाहते हैं /functions-detail
या /functions/open-door
जो भी शामिल है /functions
उस में तो आप उपयोग करने की आवश्यकता exact
के लिए /functions
मार्ग।
यहां देखें: https://reacttraining.com/react-router/core/api/Route/exact-nool
सटीक: बूल
जब सही है, तभी मैच होगा जब पथ location.pathname
बिल्कुल मेल खाता है।
**path** **location.pathname** **exact** **matches?**
/one /one/two true no
/one /one/two false yes
सबसे छोटा जवाब है
कृपया यह प्रयास करें।
<switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/shop" component={Shop} />
</switch>
exact
विशेषता / प्रस्ताव का अर्थ समझाने के लिए कुछ भी नहीं करता है , और इस प्रकार निश्चित रूप से एक "उत्तर" नहीं है। आपको उस समस्या को हल करने के बजाय वास्तव में पूछे जाने वाले प्रश्न को हल करने का प्रयास करना चाहिए, जो आपको यकीन नहीं है कि ओपी वास्तव में है।