আপনার লোডিং রুটে কী ঘটছে সে সম্পর্কে আমরা কতটা কম জানি তা বিবেচনা করে এটি একটি শক্ত কল।
কিন্তু ...
আমার কখনও লোডিং রুট তৈরি করার প্রয়োজন হয়নি, কেবল কখনও লোডিং উপাদান (গুলি) যা ইনিশ / ডেটা সংগ্রহের পর্যায়ে একাধিক রুটে রেন্ডার হয়ে যায়।
লোডিং রুট না থাকার একটি যুক্তি হ'ল কোনও ব্যবহারকারী সম্ভবত এই ইউআরএলে (দুর্ঘটনাক্রমে) সরাসরি নেভিগেট করতে পারে এবং তারপরে মনে হয় ব্যবহারকারীকে কোথায় পাঠাতে হবে বা কী পদক্ষেপ নেবে তা জানার মতো যথেষ্ট প্রসঙ্গ নেই। যদিও এর অর্থ এই হতে পারে যে এটি এই সময়ে একটি ত্রুটিযুক্ত রুটে পড়ে। সামগ্রিকভাবে, দুর্দান্ত অভিজ্ঞতা নয়।
অন্যটি হ'ল যদি আপনি আপনার রুটগুলি সরল করেন, রুটের মধ্যে চলাচল অনেক সহজ হয়ে যায় এবং ব্যবহার না করে প্রত্যাশিত / পছন্দসই আচরণ করে $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"})