क्या कोई अंतर बता सकता है
<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विशेषता / प्रस्ताव का अर्थ समझाने के लिए कुछ भी नहीं करता है , और इस प्रकार निश्चित रूप से एक "उत्तर" नहीं है। आपको उस समस्या को हल करने के बजाय वास्तव में पूछे जाने वाले प्रश्न को हल करने का प्रयास करना चाहिए, जो आपको यकीन नहीं है कि ओपी वास्तव में है।