Maison > Applet WeChat > Développement de mini-programmes > Comment développer un composant de recherche d'applet WeChat à partir de zéro

Comment développer un composant de recherche d'applet WeChat à partir de zéro

angryTom
Libérer: 2020-03-20 10:29:42
avant
3239 Les gens l'ont consulté

Cet article présente la méthode de développement d'un composant de recherche d'applet WeChat à partir de zéro. J'espère qu'il sera utile aux amis qui apprennent le développement d'applets WeChat !

Comment développer un composant de recherche d'applet WeChat à partir de zéro

Comment développer un composant de recherche d'applet WeChat à partir de zéro

Définir un conteneur pour le composant et placer l'icône de recherche et la saisie dans la zone conteneur, le bouton de texte clair et le bouton de recherche.

Comment développer un composant de recherche dapplet WeChat à partir de zéro

<view class="input-wrapper">
    <icon class="search-icon"/>
    <input
        placeholder=&#39;{{placeholder}}&#39; 
        value=&#39;{{inputValue}}&#39; 
        bindinput=&#39;handleInput&#39; 
        bindconfirm=&#39;handleSearch&#39;
        bindfocus=&#39;inputFocused&#39;>
    </input>
    <view class="close-icon-wrapper">
        <icon class="close-icon"/>
    </view>
    搜索
</view>
Copier après la connexion

Style de composant (apprentissage recommandé : Développement de mini-programmes)

conteneur : hauteur 100 rpx, couleur de fond# eeee, mise en page flexible.

input-wrapper : hauteur 80 rpx, couleur d'arrière-plan #fff, disposition flexible, rayon de bordure : 20rpx.

icône de recherche : largeur et hauteur 32 rpx.

entrée : couleur de la police et du curseur #000, taille de la police 32 rpx.

close-icon-wrapper : largeur et hauteur 80 rpx, positionnement absolu.

texte : Bouton de recherche 110 rpx de large, 65 rpx de haut, positionné de manière absolue, bordure gauche 2rpx solide #eee.

.container {
    background: #eee;
    height: 100rpx;
    width: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}
.input-wrapper {
    display: flex;
    align-items: center;
    height: 80rpx;
    width: 80%;
    background: #fff;
    border-radius: 20rpx;
}
.input-wrapper .search-icon {
    margin-left: 20rpx;
    width: 32rpx;
    height: 32rpx;
}
.input-wrapper input {
    margin-left: 10rpx;
    color: #000;
    font-size: 32rpx;
    caret-color: #000;
    width: 60%;
}
.input-wrapper .close-icon-wrapper{
    position: absolute;
    left: 480rpx;
    width: 80rpx;
    height: 80rpx;
    background:#fff;
    display: flex;
    justify-content: center;
    align-items: center;
}
.input-wrapper .close-icon {
    width: 42rpx;
    height: 42rpx;
}
.input-wrapper text {
    position: absolute;
    right: 80rpx;
    width: 110rpx;
    height: 65rpx;
    padding: 0;
    background: #fff;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 32rpx;
    border-left: 2rpx solid #eee;
}
Copier après la connexion

Fonction composant

Comment développer un composant de recherche dapplet WeChat à partir de zéro

Dans le constructeur du composant, faites attention à distinguer les propriétés et les données Écrivez le. composant dans les propriétés Pour les propriétés externes, data écrit les propriétés internes du composant. Dans ce composant de recherche, l'espace réservé et la valeur sont transmis depuis la page, ils sont donc écrits dans les propriétés, et showCloseIcon, qui contrôle si le bouton d'effacement apparaît, est écrit dans les données.

properties: {
    placeholder: {
        type: String,
        value: &#39;搜索&#39; // 如果页面不传placeholder,显示“搜索”
    },
    inputValue: {
        type: String
    }
},
data: {
    showCloseIcon: false,
},
Copier après la connexion

2. Paramètres de la méthode

Flux d'événements

(1) Le curseur n'est pas focalisé et il n'y a pas d'entrée - l'icône de recherche, l'espace réservé et la recherche sont affichées.

(2) Le curseur est focalisé et il n'y a aucune entrée - le curseur clignote et l'icône de recherche, l'espace réservé et le bouton de recherche sont affichés.

(3) Le curseur est mis au point et il y a une saisie - le curseur clignote et l'icône de recherche, le texte de saisie, le bouton d'effacement et le bouton de recherche sont affichés.

(4) Le curseur n'est pas focalisé et il y a une saisie - affichez l'icône de recherche, saisissez le texte, le bouton d'effacement et le bouton de recherche.

(5) Appuyez sur Entrée pour rechercher - le bouton Effacer est masqué.

(6) Cliquez sur le bouton de recherche - désactivez le bouton pour masquer.

On peut voir que les événements de focus et de saisie au clavier du composant d'entrée sont requis.

Comment développer un composant de recherche dapplet WeChat à partir de zéro

<view
    placeholder=&#39;{{placeholder}}&#39; 
    value=&#39;{{inputValue}}&#39; 
    bindinput=&#39;handleInput&#39; 
    bindconfirm=&#39;handleSearch&#39;
    bindfocus=&#39;inputFocused&#39;>
</view>
Copier après la connexion

inputFocused : S'il y a du contenu dans la zone de saisie pendant le focus, closeIcon est affiché

handleInput : S'il n'y a pas de contenu pendant le focus ; entrée, il n'est pas affiché closeIcon a du contenu, affiche closeIcon et stocke la valeur dans value.

handleSearch : après avoir cliqué sur Entrée, closeIcon ne sera pas affiché.

triggerEvent : lorsqu'un composant personnalisé déclenche un événement, vous devez utiliser la méthode triggerEvent pour spécifier le nom de l'événement, l'objet de détail et les options de l'événement.

inputFocused(e) {
            if (e.detail.value !== &#39;&#39;) {
                this.setData({
                    showCloseIcon: true,
                });
            }
        },
        handleInput(e) {
            if (e.detail.value == &#39;&#39;) {
                this.setData({
                    showCloseIcon: false,
                });
            } else {
                this.setData({
                    showCloseIcon: true,
                });
                this.triggerEvent(&#39;handleInput&#39;, {
                    value: e.detail.value
                });
            }
        },
        handleSearch() { // 点击键盘上的回车,调用此方法
            this.setData({
                showCloseIcon: false,
            });
            console.log(&#39;handleSearch&#39;, this.data.inputValue);
        },
Copier après la connexion

La recherche ajoute respectivement des événements de clic pour closeIcon et le bouton de recherche.

Ajoutez des événements de clic pour closeIcon et le bouton de recherche respectivement.

clearValue() {
            this.triggerEvent(&#39;handleInput&#39;, {
                value: &#39;&#39;
            });
            this.setData({
                showCloseIcon: false,
            });
        },
        onTap() {
            this.setData({
                showCloseIcon: false,
            });
            console.log(&#39;onTap&#39;, this.data.inputValue);
        },组件 json
{
  component:true
}
Copier après la connexion

Page json

Le nom du projet est livre de recettes, et le préfixe du composant ici est uniformément ck.

{
    usingComponents:{
        ck-input:/components/search/index
    }
}
Copier après la connexion

page wxml

<input
    placeholder=&#39;搜你想吃的&#39;
    inputValue={{inputValue}}
    bind:handleInput=handleInput>
</input>
Copier après la connexion

page js

handleInput(e) {
        this.setData({
            inputValue: e.detail.value,
        });
    },
Copier après la connexion

À ce stade, le composant de recherche a terminé son développement préliminaire.

Site Web PHP chinois, un grand nombre de tutoriels vidéo jquery, bienvenue pour apprendre !

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!

Étiquettes associées:
source:zixun.jisuapp.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal