Maison Applet WeChat Développement de mini-programmes Comment l'applet détecte-t-elle les données via la montre et le calcul

Comment l'applet détecte-t-elle les données via la montre et le calcul

Apr 27, 2020 am 09:30 AM
小程序

Comment l'applet détecte-t-elle les données via la montre et le calcul

Dans Vue, calculé est une propriété calculée, similaire à un filtre, qui traite les données liées à la vue et écoute les modifications. Pour surveiller des types de données complexes, Watch doit utiliser une surveillance approfondie. Ces deux éléments peuvent détecter les modifications de données lors de la vue. Contrairement à Vue, l'applet WeChat peut utiliser la surveillance et le calcul pour apporter les modifications correspondantes. Seule la fonction this.setData() de l'applet peut détecter les données, donc chaque fois que les modifications des données dans l'applet doivent être détectées, la fonction doit être exécutée manuellement. De plus, l'applet peut également associer ces deux fonctions pour détecter les modifications de données.

Vue implémente la détection des modifications de données via Object.defineProperty. L'injection de toutes les opérations de liaison dans le setter de la variable peut entraîner des modifications dans d'autres données lorsque la variable change. En fait, l'implémentation dans un petit programme est plus simple que dans vue, car pour l'objet dans data, vue doit lier récursivement chaque variable de l'objet pour le rendre réactif. Mais dans l'applet WeChat, qu'il s'agisse d'un objet ou d'un type de base, il ne peut être modifié que via this.setData(). De cette façon, nous n'avons besoin que de détecter les changements dans la valeur de la clé dans les données au lieu de la clé dans. la valeur clé.

Code de test :

Page({
data: {
test: { a: 123 },
test1: \'test1\',
},
onLoad() {
computed(this, {
test2: function() {
returnthis.data.test.a + \'2222222\'
},
test3: function() {
returnthis.data.test.a + \'3333333\'
}
})
watch(this, {
test:function(newVal) {
console.log(\'invoke watch\')
this.setData({test1: newVal.a + \'11111111\' })
}
})
},
changeTest() {
this.setData({ test:{ a: Math.random().toFixed(5) } })
},
})
Copier après la connexion

Nous devons maintenant implémenter les méthodes de surveillance et calculées pour que lorsque le test change, test1, test2 et test3 changent également. À cet effet, un bouton est ajouté. Lorsque vous cliquez sur ce bouton, le test change. La méthode

watch est relativement simple. Nous définissons d'abord une fonction pour détecter les changements :

function defineReactive(data, key, val, fn) {
Object.defineProperty(data, key, {
configurable: true,
enumerable: true,
get: function() {
return val
},
set: function(newVal){
if (newVal === val)return
fn &&fn(newVal)
val = newVal
},
})
}
Copier après la connexion

Ensuite, parcourons les objets transmis par la fonction watch et appelons la méthode

function watch(ctx, obj) {
Object.keys(obj).forEach(key => {
defineReactive(ctx.data, key, ctx.data[key], function(value) {
obj[key].call(ctx,value)
})
})
}
Copier après la connexion
<🎜. pour chaque clé. > Le paramètre ici est fn, qui est la valeur de test dans la méthode watch ci-dessus. Ici, la méthode est enveloppée dans une couche et liée au contexte.

Regardons calculé. C'est un peu plus compliqué car nous ne pouvons pas savoir quelle variable des données dépend du calcul, nous ne pouvons donc parcourir que chaque variable des données.

function computed(ctx, obj) {
let keys =Object.keys(obj)
let dataKeys =Object.keys(ctx.data)
dataKeys.forEach(dataKey => {
defineReactive(ctx.data, dataKey, ctx.data[dataKey])
})
let firstComputedObj =keys.reduce((prev, next) => {
ctx.data.$target =function() {
ctx.setData({[next]: obj[next].call(ctx) })
}
prev[next] =obj[next].call(ctx)
ctx.data.$target =null return prev
}, {})
ctx.setData(firstComputedObj)
}
Copier après la connexion

Expliquez ce code en détail. Tout d'abord, appelez la méthode définirReactive pour chaque attribut des données. Calculez ensuite la première valeur de chaque attribut calculé, qui est test2 et test3 dans l'exemple ci-dessus.

computed(this, {
test2: function() {
returnthis.data.test.a + \&#39;2222222\&#39;
},
test3: function() {
returnthis.data.test.a + \&#39;3333333\&#39;
}
})
Copier après la connexion
Ici, nous appelons respectivement les valeurs de test2 et test3, combinons la valeur de retour et la valeur clé correspondante dans un objet, puis appelons setData(), afin que ces deux valeurs soient calculées pour la première fois, nous utilisons ici la méthode de réduction. test2 et test3 dépendent tous deux de test, donc lorsque test change, les fonctions correspondantes dans test2 et test3 doivent être appelées dans sa fonction setter, et ces deux variables sont définies via setData.

Mini Program Store Fournit plus de mini-programmes en ligne

déclare une variable pour enregistrer toutes les fonctions qui doivent être exécutées lors du changement et exécute chaque fonction lorsqu'elle est définie parce que. la valeur de this.data.test n'a pas changé pour le moment, utilisez setTimeout pour l'exécuter à nouveau au tour suivant. Maintenant, la question se pose de savoir comment ajouter des fonctions aux sous-marins. Je ne sais pas si vous vous souvenez encore des deux lignes de code en réduction que nous avons mentionnées ci-dessus. Parce que lorsque les valeurs calculées de test1 et test2 sont calculées pour la première fois, la méthode getter de test sera appelée. C'est une bonne opportunité d'injecter la fonction dans les sous-marins, de déclarer une variable $target sur les données et d'attribuer la fonction. fonction qui doit être exécutée. Donnez cette variable, afin que vous puissiez juger s'il y a une valeur cible sur les données dans le getter, afin que vous puissiez les pousser dans les sous-marins. Il convient de noter que vous devez définir la cible sur null immédiatement.

Jusqu'à présent, la montre a été implémentée et calculée, mais ce n'est pas encore fini, il y a un problème. Lorsque vous utilisez les deux en même temps, la clé de l'objet dans watch existe également dans data, donc Object.defineProperty sera appelé à plusieurs reprises sur la variable, et cette dernière écrasera la précédente. Parce que ce n'est pas comme vue où l'ordre d'appel des deux peut être déterminé, nous recommandons d'écrire d'abord calculated puis watch, afin que la valeur calculée puisse être surveillée.

Recommandé : "

Tutoriel de développement de mini-programmes"

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Développer l'applet WeChat en utilisant Python Développer l'applet WeChat en utilisant Python Jun 17, 2023 pm 06:34 PM

Avec la popularité de la technologie Internet mobile et des smartphones, WeChat est devenu une application indispensable dans la vie des gens. Les mini-programmes WeChat permettent aux gens d'utiliser directement des mini-programmes pour résoudre certains besoins simples sans télécharger ni installer d'applications. Cet article explique comment utiliser Python pour développer l'applet WeChat. 1. Préparation Avant d'utiliser Python pour développer l'applet WeChat, vous devez installer la bibliothèque Python appropriée. Il est recommandé d'utiliser ici les deux bibliothèques wxpy et itchat. wxpy est une machine WeChat

Les petits programmes peuvent-ils réagir ? Les petits programmes peuvent-ils réagir ? Dec 29, 2022 am 11:06 AM

Les mini-programmes peuvent utiliser React. Comment l'utiliser : 1. Implémentez un moteur de rendu basé sur "react-reconciler" et générez un DSL ; 2. Créez un mini composant de programme pour analyser et restituer le DSL 3. Installez npm et exécutez le développeur Build ; npm dans l'outil ; 4. Introduisez le package dans votre propre page, puis utilisez l'API pour terminer le développement.

Implémenter des effets de retournement de cartes dans les mini-programmes WeChat Implémenter des effets de retournement de cartes dans les mini-programmes WeChat Nov 21, 2023 am 10:55 AM

Implémentation d'effets de retournement de cartes dans les mini-programmes WeChat Dans les mini-programmes WeChat, la mise en œuvre d'effets de retournement de cartes est un effet d'animation courant qui peut améliorer l'expérience utilisateur et l'attractivité des interactions d'interface. Ce qui suit présentera en détail comment implémenter l'effet de retournement de carte dans l'applet WeChat et fournira des exemples de code pertinents. Tout d'abord, vous devez définir deux éléments de carte dans le fichier de mise en page du mini-programme, un pour afficher le contenu avant et un pour afficher le contenu arrière. L'exemple de code spécifique est le suivant : &lt;!--index.wxml-. -&gt;&l

Alipay a lancé le mini-programme « Chinese Character Picking-Rare Characters » pour collecter et compléter la bibliothèque de personnages rares. Alipay a lancé le mini-programme « Chinese Character Picking-Rare Characters » pour collecter et compléter la bibliothèque de personnages rares. Oct 31, 2023 pm 09:25 PM

Selon les informations de ce site du 31 octobre, le 27 mai de cette année, Ant Group a annoncé le lancement du « Projet de sélection de caractères chinois » et a récemment inauguré de nouveaux progrès : Alipay a lancé le mini-programme « Sélection de caractères chinois-Caractères rares ». pour collecter des collections de la société Les personnages rares complètent la bibliothèque de personnages rares et offrent différentes expériences de saisie pour les personnages rares afin d'aider à améliorer la méthode de saisie des caractères rares dans Alipay. Actuellement, les utilisateurs peuvent accéder à l'applet « Caractères peu communs » en recherchant des mots-clés tels que « capture de caractères chinois » et « caractères rares ». Dans le mini-programme, les utilisateurs peuvent soumettre des images de caractères rares qui n'ont pas été reconnus et saisis par le système. Après confirmation, les ingénieurs d'Alipay effectueront des entrées supplémentaires dans la bibliothèque de polices. Ce site Web a remarqué que les utilisateurs peuvent également découvrir la dernière méthode de saisie par fractionnement de mots dans le mini-programme. Cette méthode de saisie est conçue pour les mots rares dont la prononciation n'est pas claire. Démantèlement utilisateur

Comment Uniapp réalise une conversion rapide entre les mini-programmes et H5 Comment Uniapp réalise une conversion rapide entre les mini-programmes et H5 Oct 20, 2023 pm 02:12 PM

La manière dont Uniapp peut réaliser une conversion rapide entre les mini-programmes et le H5 nécessite des exemples de code spécifiques. Ces dernières années, avec le développement de l'Internet mobile et la popularité des smartphones, les mini-programmes et le H5 sont devenus des formulaires de candidature indispensables. En tant que cadre de développement multiplateforme, uniapp peut réaliser rapidement la conversion entre les petits programmes et H5 sur la base d'un ensemble de codes, améliorant considérablement l'efficacité du développement. Cet article présentera comment Uniapp peut réaliser une conversion rapide entre les mini-programmes et H5, et donnera des exemples de code spécifiques. 1. Introduction à uniapp unia

Tutoriel sur l'écriture d'un programme de chat simple en Python Tutoriel sur l'écriture d'un programme de chat simple en Python May 08, 2023 pm 06:37 PM

Idée d'implémentation x01 Mise en place du serveur Tout d'abord, côté serveur, le socket est utilisé pour accepter les messages. Chaque fois qu'une demande de socket est acceptée, un nouveau thread est ouvert pour gérer la distribution et l'acceptation des messages. En même temps, il y a un gestionnaire. pour gérer tous les Threads, réalisant ainsi le traitement des diverses fonctions du salon de discussion. La mise en place du client x02 est beaucoup plus simple que celle du serveur. La fonction du client est uniquement d'envoyer et de recevoir des messages, et de saisir des caractères spécifiques en fonction. règles spécifiques. Pour pouvoir utiliser différentes fonctions, il suffit donc, côté client, d'utiliser deux threads, l'un est dédié à la réception de messages et l'autre à l'envoi de messages. Quant à pourquoi ne pas en utiliser un, celui-là. c'est parce que, seulement

Comment gérer l'enregistrement du mini-programme Comment gérer l'enregistrement du mini-programme Sep 13, 2023 pm 04:36 PM

Étapes de l'opération d'enregistrement du mini-programme : 1. Préparez des copies des cartes d'identité personnelles, des licences commerciales, des cartes d'identité des personnes morales et d'autres documents de classement ; 2. Connectez-vous à l'arrière-plan de gestion du mini-programme ; 3. Accédez à la page des paramètres du mini-programme ; Sélectionnez " "Paramètres de base" ; 5. Remplissez les informations de dépôt ; 6. Téléchargez les documents de dépôt ; 7. Soumettez la demande de dépôt ; 8. Attendez les résultats de l'examen. Si le dépôt n'est pas accepté, apportez des modifications en fonction des raisons. et soumettre à nouveau la demande de dépôt; 9. Les opérations de suivi du dépôt sont celles du Can.

Comment devenir membre du mini-programme WeChat Comment devenir membre du mini-programme WeChat May 07, 2024 am 10:24 AM

1. Ouvrez le mini programme WeChat et entrez dans la page du mini programme correspondante. 2. Recherchez l'entrée relative aux membres sur la page du mini-programme. Habituellement, l'entrée des membres se trouve dans la barre de navigation inférieure ou dans le centre personnel. 3. Cliquez sur le portail d'adhésion pour accéder à la page de demande d'adhésion. 4. Sur la page de demande d'adhésion, remplissez les informations pertinentes, telles que le numéro de téléphone portable, le nom, etc. Après avoir complété les informations, soumettez la demande. 5. Le mini-programme examinera la demande d'adhésion. Après avoir réussi l'examen, l'utilisateur pourra devenir membre du mini-programme WeChat. 6. En tant que membre, les utilisateurs bénéficieront de davantage de droits d'adhésion, tels que des points, des coupons, des activités exclusives aux membres, etc.

See all articles