


vue router sépare toutes les sous-routes en composants indépendants
Cette fois, je vous propose vue router pour séparer toutes les sous-routes en composants indépendants. Quelles sont les précautions pour que vue router sépare toutes les sous-routes en composants indépendants. Jetons un coup d'oeil une fois.
Routage dynamique de vue-router
vue-router官网上面是这样说的 // 带查询参数,变成 /register?plan=private router.push({ path: 'register', query: { plan: 'private' }}) 然后,我就这样写了: this.$router.push({path:'manage', query: {id: 'tasklist'}})1 结果很明显,失败了。然后我就默默的再次看了一下官网,结果发现了这句话 // 命名的路由 router.push({ name: 'user', params: { userId: 123 }}) // 带查询参数,变成 /register?plan=private router.push({ path: 'register', params: { plan: 'private' }}) 注意:如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path: const userId = 123 router.push({ name: 'user', params: { userId }}) // -> /user/123 router.push({ path: `/user/${userId}` }) // -> /user/123 // 这里的 params 不生效 router.push({ path: '/user', params: { userId }}) // -> /user 谨记啊,动态实现二级路由,需要先用变量保存二级路由名称(let router = 'tasklist'),然后调用this.$router.push({path: `/user/${router}`}).
Jetons un coup d'œil à la solution consistant à faire de chaque sous-route un composant indépendant sous le routage dynamique de vue router
Étant donné que vue-router adopte une stratégie de réutilisation de composants pour le routage imbriqué, il s'agit en effet d'une approche efficace dans la plupart des scénarios, mais si vous rencontrez cette situation :
La coexistence de plusieurs sous-routes est nécessaire, et s'il y a un besoin de commutations fréquentes, il est très souhaitable de faire de chaque sous-route un composant indépendant, bien qu'il puisse être commuté par surveillance. l'itinéraire
watch: { '$route'(to) { if (to.meta.path === '/page/buy-details') { this.id = to.params.id; this.state() } } },
Pour traiter les données mises à jour en temps réel, j'ai toujours fait cela auparavant, y compris la page d'animation ci-dessus, mais cela est vraiment gênant. Cela oblige l'utilisateur à revenir avec précision à l'état d'affichage de. la page avant de changer pendant le changement, il y avait trop de choses à considérer, j'ai donc trouvé une solution :
Le composant de sous-routage n'implique pas de code métier réel, il maintient uniquement une liste d'identifiants ouverts. . Lorsque le routage est commuté ici, l'identifiant est jugé. Ajoutez ceux qui n'ont pas été ouverts, bouclez les composants de sous-routage réels à travers cette liste, affichez l'identifiant actuel, de sorte que chaque instance soit indépendante
I. a écrit un mixins basé sur cette idée
details-page.js
export default { watch: { '$route'(to, from) { this.detailsLeave(from); this.detailsOpen(to); } }, data() { return { pagePath: '', pageId: 0, pages: {} } }, methods: { /** * 子页面打开触发 * @param route */ detailsOpen(route) { if (this.detailsPathGet(route.path) === this.pagePath) { if (!this.pages[route.params.id]) { this.$set(this.pages, route.params.id, { id: route.params.id, scrollTop: 0 }) } //路由打开 跳转滚动条 this.pageId = route.params.id; this.$nextTick(()=>{ this.$parent.$el.firstChild.scrollTop = this.pages[route.params.id].scrollTop; }); } }, /** * 路由切换触发 * 判断离开的路由是否是当前页面,如果是则记录滚动条高度 * @param route */ detailsLeave(route) { if (this.detailsPathGet(route.path) === this.pagePath) { if (this.pages[route.params.id]) { //记录滚动条高度 此处针对ea-admin后台 不同的框架要记录的滚动条el不同 this.pages[route.params.id].scrollTop = this.$parent.$el.firstChild.scrollTop ; } } }, /** * 子页面关闭函数 * @param id */ detailsClose(id) { delete this.pages[id] }, /** * 取路由不含最后一项参数的地址 * @param path * @returns {string} */ detailsPathGet(path) { const i = path.lastIndexOf('/'); return path.substr(0, i); } }, mounted() { //通过当前路由地址创建页面识别地址 注:只对path: '/user/:id' 有效 当 path: /user/:id/profile 失效 this.pagePath = this.detailsPathGet(this.$route.path); //执行第一次子页面打开 this.detailsOpen(this.$route); //监听标签关闭消息 此处针对ea-admin后台 不同框架监听关闭方式不同 this.$tabs.onRemove((page, next) => { //收到标签关闭回调,判断关闭的是否是当前页面 if (page._path === this.pagePath) { //触发子页面删除 this.detailsClose(page.id) } next() }) } }
Details.vue
<template> <p> <your-component v-for="item in pages" :id="item.id" :key="item.id" v-show="item.id === pageId"> </your-component> </p> </template> <script> import YourComponent from ''; import detailsPage from '../mixins/details-page' export default { name: 'DetailsPage', components: {YourComponent}, mixins: [detailsPage], } </script>
De cette façon, le sous-composant ne peut se concentrer que sur le traitement de ses propres données fixes Le composant étant unique, il n'y a pas lieu de s'en soucier. L'état d'affichage est stocké pour chaque identifiant.
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Comment adapter les images dans l'applet WeChat à la hauteur du modèle
vue.js front-end et données back-end Explication détaillée des étapes d'interaction
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide de l'utilisateur de ReactRouter : Comment implémenter le contrôle du routage frontal Avec la popularité des applications monopage, le routage frontal est devenu un élément important qui ne peut être ignoré. En tant que bibliothèque de routage la plus populaire de l'écosystème React, ReactRouter fournit des fonctions riches et des API faciles à utiliser, rendant la mise en œuvre du routage frontal très simple et flexible. Cet article expliquera comment utiliser ReactRouter et fournira quelques exemples de code spécifiques. Pour installer ReactRouter en premier, nous avons besoin

Comment utiliser le système de modules dans Java 9 pour séparer et isoler le code À mesure que l'échelle des logiciels continue de croître, la complexité du code continue d'augmenter. Afin de mieux organiser et gérer le code, Java9 a introduit le système de modules. L'émergence du système de modules résout le problème des dépendances traditionnelles des packages, rendant la séparation et l'isolation du code plus faciles et plus flexibles. Cet article explique comment utiliser le système de modules dans Java 9 pour réaliser la séparation et l'isolation du code. 1. Définition du module En Java9, nous pouvons utiliser le mot-clé module pour définir

Titre : Suggestions sur la sélection de la technologie frontale dans le développement de séparation front-end et back-end Golang À mesure que la complexité et les exigences des applications Web continuent d'augmenter, le modèle de développement de séparation front-end et back-end devient de plus en plus populaire. Dans ce modèle de développement, le backend est responsable du traitement de la logique métier et le frontend est responsable de l'affichage des pages et de l'interaction avec les utilisateurs. Les deux communiquent via des API. Pour les équipes de développement utilisant Golang comme langage back-end, le choix de la bonne technologie front-end est crucial. Cet article discutera des technologies frontales recommandées à choisir dans le développement séparé du front-end et du back-end dans Golang, et

VueRouter est un plug-in de gestion d'itinéraire officiellement fourni par Vue.js. Il peut nous aider à implémenter la navigation de page et le changement d'itinéraire dans les applications Vue. La fonctionnalité Lazy-Loading est un avantage unique de VueRouter, qui peut considérablement optimiser les performances des pages. Dans cet article, nous présenterons la fonctionnalité de routage Lazy-Loading de VueRouter et fournirons quelques exemples de code pratiques pour optimiser les performances des pages. Lazy-Loading signifie en cas de besoin

Solution pour réagir au routeur qui ne s'affiche pas : 1. Ajoutez browserRouter au composant de routage parent pour envelopper le routeur ; 2. Utilisez "this.props.history.go()" pour actualiser le composant 3. Ajoutez "forcerefresh" au paramètre browserrouter ; ={true}"; 4. Écrivez une fonction hook dans "<Route>" et appelez-la lorsque vous quittez ou entrez dans cette route.

VueRouter est le gestionnaire de routage officiel du framework Vue.js. Il permet aux développeurs de changer de contenu de page via le mappage de routage, rendant les applications monopage plus contrôlables et plus faciles à maintenir. Cependant, à mesure que les applications deviennent plus complexes, le chargement et l’analyse des routes peuvent devenir un goulot d’étranglement en termes de performances. Afin de résoudre ce problème, VueRouter fournit une fonction de chargement paresseux des routes, qui diffère le chargement des routes jusqu'à ce qu'elles soient réellement nécessaires. Le chargement paresseux est une technologie de chargement qui

Les développeurs PHP sont souvent confrontés à des opérations de base de données pendant le processus de développement de sites Web. En tant que système de gestion de bases de données très populaire, la séparation lecture-écriture de MySQL est l'un des moyens importants pour améliorer les performances des sites Web. Dans le développement PHP, la mise en œuvre de la séparation lecture-écriture MySQL peut considérablement améliorer les capacités d'accès simultané du site Web et l'expérience utilisateur. Cet article présentera en détail la méthode d'implémentation de la séparation lecture-écriture MySQL et fournira des exemples de code PHP spécifiques pour aider les développeurs PHP à mieux comprendre et appliquer la fonction de séparation lecture-écriture. Qu'est-ce que MySQL lit

1. Saut d'itinéraire 1. Introduisez d'abord l'API — useRouterimport{useRouter}from'vue-router'2 Définissez la variable du routeur sur la page de saut // Définissez d'abord constrouter=useRouter() dans la configuration 3. Utilisez router.push pour. accéder à la page //String router.push('home')//Object router.push({path:'home'})//
