小程序 ----- 自定義組件(一)對組件的(de)簡單使用 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 小程序相關 >

小程序 ----- 自定義組件(一)對組件的(de)簡單使用

發表時(shí)間:2021-1-5

發布人(rén):融晨科技

浏覽次數:68

使用自定義組件的(de)方式來(lái)構建頁面,不(bù)是(shì)小程序自帶的(de)組件

1、創建自定義組件

類似于(yú)頁面也(yě)是(shì)由 wxml,js,json,css 四個(gè)頁面組成,一般放在(zài)專門的(de)文件夾中

 文件内容

 2、在(zài)json 文件中引用自定義組件

 3、編寫自定義組件

 将标題靈活話,通過循環方式賦值

 4、實現點擊不(bù)同标題樣式随之(zhī)改變

   * 事件回調函數在(zài) 頁面js 與組件js 的(de)區别?
   *  1、頁面 .js 文件中存放事件回調函數的(de)時(shí)候存放data 同級下!!
   *  2、組件 .js 文件中存放事件回調函數的(de)時(shí)候必須放在(zài)methods(組件方法列表)

 其中獲取data 數據中的(de)不(bù)同寫法

複制代碼
 解構對複雜類型進行解構時(shí),複制一份變量引用
 let tabs = this.data.tabs; 相當于(yú)   let {tabs} = this.data; 
 最嚴謹的(de)做法,重新拷貝一份數組,再對這(zhè)個(gè)數組的(de)備份進行處理,不(bù)要(yào / yāo)直接修改this.data 數據
 let tabs = JSON.parse(JSON.stringify(this.data.tabs));
     
      //let tabs = JSON.parse(JSON.stringify(this.data.tabs));
      let {tabs} = this.data;
      //let tabs = this.data.tabs;
複制代碼

自定義組件小小代碼:

wxml中

複制代碼
<!-- 自定義組件主要(yào / yāo)分爲(wéi / wèi) 标題和(hé / huò)内容 -->
<view class="tabs">
  <view class="tabs_title">
    <!-- <view class="title_item active" >首頁</view>
    <view class="title_item">分類</view>
    <view class="title_item">本地(dì / de)</view>
    <view class="title_item">關于(yú)</view> -->
<!-- 通過循環的(de)方式實現 
wx:for ="{{數組名}}" 
wx:key ="id關鍵字" 
//判斷是(shì)否爲(wéi / wèi)真
class="title_item {{item.isActive?'active':'true'}}"
-->
<view wx:for ="{{tabs}}" wx:key ="id" 
  class="title_item {{item.isActive?'active':'true'}}"
  bindtap="hanldeItemTap"
  data-index ="{{index}}"
>
{{item.name}}

</view>

  </view>
<view class="tabs_conent">内容</view>
</view>
複制代碼

wxss 中

複制代碼
/* 設置組件樣式
  display: flex;  變成伸縮盒子(zǐ)
  justify-content: center; 文字水平對齊
  align-items: center;  垂直對齊
  border-bottom: 10rpx solid currentColor;  文字下劃線
  flex 讓所有彈性盒模型對象的(de)子(zǐ)元素都有相同的(de)長度,并且忽略其内部的(de)内容
*/
.tabs{}
.tabs_title{
  
  display: flex;
  padding: 10rpx;
}
.title_item{
  flex: 1;
  display: flex;
  justify-content: center;
  align-items: center;
}
.active{
  color: red;
  border-bottom: 10rpx solid currentColor;
}
.tabs_conent{}
複制代碼

js 中

複制代碼
// component/Tabs/Tabs.js
Component({

  /**
   * 組件的(de)初始數據
   */
  data: {
    tabs :[
      {
        id : 0,
        name : "首頁",
        isActive : true
      },
      {
        id : 1,
        name : "分類",
        isActive : false
      },
      {
        id : 2,
        name : "本地(dì / de)",
        isActive : false
      },
      {
        id : 3,
        name : "關于(yú)",
        isActive : false
      }

    ]

  },

  /**
   * 存放事件回調函數 頁面js 與組件js 的(de)區别?
   *  1、頁面 .js 文件中存放事件回調函數的(de)時(shí)候存放data 同級下!!
   *  2、組件 .js 文件中存放事件回調函數的(de)時(shí)候必須放在(zài)methods(組件方法列表)
   */

  methods: {
    /*
     實現點擊标題樣式改變
     1、在(zài)methods 中綁定點擊時(shí)間
     2、獲取被點擊标題的(de)索引
     3、獲取原數組
     4、對數組循環,給每一個(gè)循環性選中屬性改爲(wéi / wèi)false,将當前索引項改爲(wéi / wèi)true
    
    */

    hanldeItemTap(e){
      //  console.log(e);   通過打印獲取index 得知 dataset 含有index
      //獲取索引
      const {index} = e.currentTarget.dataset;
      //獲取data 中數組
      /*
      解構對複雜類型進行解構時(shí),複制一份變量引用
      let tabs = this.data.tabs; 相當于(yú)   let {tabs} = this.data; 
    最嚴謹的(de)做法,重新拷貝一份數組,再對這(zhè)個(gè)數組的(de)備份進行處理,不(bù)要(yào / yāo)直接修改this.data 數據
    let tabs = JSON.parse(JSON.stringify(this.data.tabs));
      */
      //let tabs = JSON.parse(JSON.stringify(this.data.tabs));
      let {tabs} = this.data;
      //let tabs = this.data.tabs;
      //循環數組 [].forEach遍曆數組時(shí)修改 v 也(yě)會修改源數組
      tabs.forEach((v,i)=>i===index?v.isActive=true:v.isActive=false);
      //把值重新丢回去
      this.setData({
        tabs
      })
        
    },

    ahanldeItemTap(e){
      //  console.log(e);   通過打印獲取index 得知 dataset 含有index
      //獲取索引
      const {index} = e.currentTarget.dataset;
      //獲取data 中數組
      /*
      解構對複雜類型進行解構時(shí),複制一份變量引用
      let tabs = this.data.tabs; 相當于(yú)   let {tabs} = this.data; 
    最嚴謹的(de)做法,重新拷貝一份數組,再對這(zhè)個(gè)數組的(de)備份進行處理,不(bù)要(yào / yāo)直接修改this.data 數據
    let tabs = JSON.parse(JSON.stringify(this.data.tabs));
      */
      //let tabs = JSON.parse(JSON.stringify(this.data.tabs));
      let {atabs} = this.data;
      //let tabs = this.data.tabs;
      //循環數組 [].forEach遍曆數組時(shí)修改 v 也(yě)會修改源數組
      atabs.forEach((v,i)=>i===index?v.isActive=true:v.isActive=false);
      //把值重新丢回去
      this.setData({
        atabs
      })
        
    }
  }
})
複制代碼

常用的(de)構造器

 

  比較常用的(de)就(jiù)是(shì)父子(zǐ)之(zhī)間的(de)傳遞數據,父組件通過屬性方式給子(zǐ)組件傳遞參數,子(zǐ)組件通過事件的(de)方式向父組件傳遞參數

相關案例查看更多