Comment implémenter le composant de calendrier à l'aide de Vue??
Jun 25, 2023 pm 01:28 PMVue est un framework front-end très populaire. Il fournit de nombreux outils et fonctions, tels que la création de composants, la liaison de données, le traitement d'événements, etc., qui peuvent aider les développeurs à créer des applications Web efficaces, flexibles et faciles à maintenir. Dans cet article, je vais vous présenter comment implémenter un composant de calendrier à l'aide de Vue.
1. Analyse des exigences
Tout d'abord, nous devons analyser les exigences de ce composant du calendrier. Un calendrier de base doit avoir les fonctions suivantes :
- Afficher la page du calendrier du mois en cours ;
- Prise en charge du passage au mois précédent ou au mois suivant ;
- Prise en charge du clic sur un jour pour accéder à la page d'informations spécifique de ce jour ; .
2. Répartition des composants
Selon les besoins, nous pouvons diviser les composants suivants :
- Composant Calendrier (Calendar) : responsable de l'affichage de l'intégralité de l'interface du calendrier
- Composant Header (Header) : responsable de l'affichage de l'actuel ; informations sur le mois et bouton de commutation?;
- Corps du calendrier?: responsable de l'affichage de la partie principale du calendrier, c'est-à-dire les jours.
3. écriture des composants
Maintenant, nous écrivons l'implémentation spécifique de chaque composant.
Composant principal
La principale responsabilité du composant principal est d'afficher les informations du mois en cours et de fournir une fonction de changement de mois. Nous pouvons implémenter le changement de mois via un composant Select. Le code est le suivant?:
<template> <div class="header"> <select v-model="currentMonth" @change="onMonthChange"> <option v-for="month in months" :value="month.value">{{ month.label }}</option> </select> <button @click="nextMonth">Next</button> <button @click="prevMonth">Prev</button> </div> </template> <script> export default { data() { return { currentMonth: new Date().getMonth() + 1, months: [ { value: 1, label: 'January' }, { value: 2, label: 'February' }, { value: 3, label: 'March' }, { value: 4, label: 'April' }, { value: 5, label: 'May' }, { value: 6, label: 'June' }, { value: 7, label: 'July' }, { value: 8, label: 'August' }, { value: 9, label: 'September' }, { value: 10, label: 'October' }, { value: 11, label: 'November' }, { value: 12, label: 'December' }, ], }; }, methods: { nextMonth() { this.currentMonth++; if (this.currentMonth > 12) { this.currentMonth = 1; } }, prevMonth() { this.currentMonth--; if (this.currentMonth < 1) { this.currentMonth = 12; } }, onMonthChange() { // 處理月份切換 }, }, }; </script>
Ici, nous implémentons le changement de mois via un composant Select et déclarons le mois en cours currentMonth et la liste de tous les mois dans le composant. Dans le même temps, nous avons également ajouté les méthodes nextMonth et prevMonth au composant pour implémenter la fonction de changement de mois.
Composant principal du calendrier
La responsabilité principale du composant principal du calendrier est d'afficher la partie principale du calendrier, c'est-à-dire les jours. Pour obtenir cette fonctionnalité, nous pouvons utiliser une boucle for pour parcourir les jours du mois en cours et les restituer. Dans le même temps, nous devons également tenir compte du fait que le composant du calendrier s'étend sur plusieurs mois. Nous devons donc calculer le nombre de jours de chaque mois et le jour de la semaine correspondant au premier jour de chaque mois. Pour ce problème, nous pouvons utiliser la bibliothèque Moment.js pour le traitement de la date/heure. Le code est le suivant?:
<template> <div class="body"> <div class="day" v-for="day in days" :key="day" :class="{ disabled: day === 0 }" @click="onClick(day)"> {{ day === 0 ? '' : day }} </div> </div> </template> <script> import moment from 'moment'; export default { props: { month: Number, year: Number, }, data() { return { days: [], }; }, computed: { startDay() { return moment(`${this.year}-${this.month}-01`).day(); }, totalDays() { return moment(`${this.year}-${this.month}`, 'YYYY-MM').daysInMonth(); }, }, methods: { onClick(day) { if (day !== 0) { // 跳轉(zhuǎn)到該天的具體信息頁面 } }, }, mounted() { let days = Array.from({ length: 42 }).fill(0); for (let i = 1; i <= this.totalDays; i++) { days[i + this.startDay - 1] = i; } this.days = days; }, }; </script>
Ici, nous avons d'abord introduit la bibliothèque Moment.js et défini deux accessoires, mois et année, dans le composant pour représenter le mois et l'année auxquels appartient le corps du calendrier actuel. Ensuite, nous avons défini deux propriétés calculées?: startDay et totalDays, qui sont utilisées pour calculer respectivement le jour de la semaine et le nombre de jours du mois où se situe le premier jour du mois en cours. Enfin, nous utilisons la fonction hook montée pour initialiser les données des jours, et utilisons une boucle for pour parcourir les jours de chaque mois et les afficher sur la page.
Composant Calendrier
Enfin, écrivons l'intégralité du composant calendrier. La principale responsabilité du composant calendrier est d'intégrer les deux composants ci-dessus et de gérer une certaine logique globale. Le code est le suivant?:
<template> <div class="calendar"> <Header /> <div class="weekdays"> <div class="weekday">Sun</div> <div class="weekday">Mon</div> <div class="weekday">Tue</div> <div class="weekday">Wed</div> <div class="weekday">Thu</div> <div class="weekday">Fri</div> <div class="weekday">Sat</div> </div> <Body :month="currentMonth" :year="currentYear" /> </div> </template> <script> import Header from './Header.vue'; import Body from './Body.vue'; export default { components: { Header, Body, }, data() { return { currentMonth: new Date().getMonth() + 1, currentYear: new Date().getFullYear(), }; }, }; </script>
Ici, nous introduisons les composants Header et Body et les imbriquons dans un conteneur. En même temps, nous déclarons également le mois et l'année en cours dans le composant.
4. Utilisez le composant calendrier
Désormais, nous pouvons utiliser notre composant calendrier partout où un calendrier est nécessaire. Par exemple?:
<template> <div> <Calendar /> <!-- 展示日歷組件 --> </div> </template> <script> import Calendar from './Calendar.vue'; export default { components: { Calendar, }, }; </script>
De cette fa?on, nous avons implémenté avec succès un composant de calendrier simple en utilisant Vue. Bien entendu, il ne s'agit que d'une version de base, et vous pouvez étendre ses fonctions ou embellir son interface selon vos besoins réels. J'espère que cet article pourra vous être utile.
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

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à 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)

Pour développer une application Web Python complète, suivez ces étapes: 1. Choisissez le cadre approprié, tel que Django ou Flask. 2. Intégrez les bases de données et utilisez des orms tels que Sqlalchemy. 3. Concevez le frontal et utilisez Vue ou React. 4. Effectuez le test, utilisez Pytest ou Unittest. 5. Déployer les applications, utiliser Docker et des plates-formes telles que Heroku ou AWS. Grace à ces étapes, des applications Web puissantes et efficaces peuvent être construites.

ReactivitytransforminVue3aimedtosimplifyhandlingreactivedatabyautomaticallytrackingandmanagingreactivitywithoutrequiringmanualref()or.valueusage.Itsoughttoreduceboilerplateandimprovecodereadabilitybytreatingvariableslikeletandconstasautomaticallyreac

Les différences de base entre Vue.js et React dans le développement des composants sont: 1) Vue.js utilise la syntaxe du modèle et l'option API, tandis que React utilise JSX et les composants fonctionnels; 2) Vue.js utilise des systèmes réactifs, React utilise des données immuables et un DOM virtuel; 3) Vue.js fournit plusieurs crochets de cycle de vie, tandis que React utilise plus de crochets d'effet d'utilisation.

Internationalisation et olocalisation dans la variation des acquis

En utilisant: keyattributewithv-forrinvuesessentialforperformanceAndCorrectBehavior.Ort, itHelpsvueTrackEachElementation efficace par ce que

Les méthodes pour optimiser les performances des grandes listes et des composants complexes dans Vue incluent: 1. Utilisez la directive V-ONCE pour traiter le contenu statique pour réduire les mises à jour inutiles; 2. Implémentez le défilement virtuel et ne rendez que le contenu de la zone visuelle, comme l'utilisation de la bibliothèque Vue-Virtual-Croller; 3. Composants de cache via Keep-Alive ou V-ONCE pour éviter les supports en double; 4. Utilisez des propriétés et des auditeurs calculés pour optimiser la logique réactive pour réduire la plage de réinstallation; 5. Suivez les meilleures pratiques, comme l'utilisation de clés uniques en V-FOR, en évitant les fonctions en ligne dans les modèles et en utilisant des outils d'analyse des performances pour localiser les goulots d'étranglement. Ces stratégies peuvent améliorer efficacement la ma?trise de l'application.

Server-sideredering (SSR) invueImproveSperformanceAndSeoBygeneratingHtmlONTheServer.1.TheServerrunsvueAppcodeandGenerateshtmlBaseDonthecurrentRoute.2.ThathtmLissentToHebroweToWeTerterActive.

Pour utiliser le modèle V pour implémenter la liaison bidirectionnelle des composants personnalisés dans Vue, vous devez d'abord comprendre son mécanisme de travail. Pour les composants personnalisés, vous avez besoin: 1. Recevez un accessoire nommé ModelValue; 2. Déclencher un événement nommé Update: ModelValue. Par défaut, il sera analysé, de sorte que le composant doit utiliser: value = "ModelValue" et $ emit ('Update: ModelValue') pour synchroniser les données. De plus, les noms d'accessoires et d'événements peuvent être personnalisés via le modèle: {Prop: ?Vérifié?, événement: ?Change?}, qui conviennent à différents types de composants tels que les commutateurs
