यह एक कठिन कॉल है जो इस बात पर विचार करता है कि आपके लोडिंग मार्ग में क्या हो रहा है, इसके बारे में हमें कम जानकारी है।
परंतु...
मुझे लोडिंग रूट बनाने की कभी जरूरत नहीं पड़ी है, केवल लोडिंग कंपोनेंट (ओं) जो कि इनिट / डेटा इकट्ठा करने के चरण के दौरान कई मार्गों पर प्रदान किए जाते हैं।
लोडिंग मार्ग नहीं होने का एक तर्क यह होगा कि कोई उपयोगकर्ता संभावित रूप से इस URL पर सीधे (गलती से) नेविगेट कर सकता है और फिर ऐसा लगता है कि यह जानने के लिए पर्याप्त संदर्भ नहीं होगा कि उपयोगकर्ता को कहां भेजा जाए या क्या कार्रवाई की जाए। हालांकि इसका मतलब यह हो सकता है कि यह इस बिंदु पर एक त्रुटि मार्ग से गुजरता है। कुल मिलाकर, शानदार अनुभव नहीं।
एक और यह है कि यदि आप अपने मार्गों को सरल करते हैं, तो मार्गों के बीच नेविगेशन बहुत सरल हो जाता है और उपयोग किए बिना अपेक्षित / वांछित व्यवहार करता है $router.replace
।
मैं समझता हूँ कि यह आपके द्वारा पूछे जाने के तरीके को हल नहीं करता है। लेकिन मेरा सुझाव है कि इस लोडिंग रूट पर पुनर्विचार किया जाए।
ऐप
<shell>
<router-view></router-view>
</shell>
const routes = [
{ path: '/', component: Main },
{ path: '/results', component: Results }
]
const router = new VueRouter({
routes,
})
const app = new Vue({
router
}).$mount('#app')
खोल
<div>
<header>
<nav>...</nav>
</header>
<main>
<slot></slot>
</main>
</div>
मुख्य पृष्ठ
<section>
<form>...</form>
</section>
{
methods: {
onSubmit() {
// ...
this.$router.push('/results')
}
}
}
परिणाम पृष्ठ
<section>
<error v-if="error" :error="error" />
<results v-if="!error" :loading="loading" :results="results" />
<loading v-if="loading" :percentage="loadingPercentage" />
</section>
{
components: {
error: Error,
results: Results,
},
data() {
return {
loading: false,
error: null,
results: null,
}
},
created () {
this.fetchData()
},
watch: {
'$route': 'fetchData'
},
methods: {
fetchData () {
this.error = this.results = null
this.loading = true
getResults((err, results) => {
this.loading = false
if (err) {
this.error = err.toString()
} else {
this.results = results
}
})
}
}
}
परिणाम घटक
मूल रूप से सटीक वही परिणाम घटक जो आपके पास पहले से है, लेकिन अगर loading
यह सच है, या यदि results
अशक्त है, हालाँकि आप पसंद करते हैं, तो आप एक नकली डेटासेट बना सकते हैं, अगर आप चाहें तो कंकाल संस्करण बना सकते हैं। अन्यथा, आप चीजों को सिर्फ उसी तरह रख सकते हैं जैसे आपके पास है।
this.$router.replace({path: "/results/xxxx"})