知識
不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
您當(dāng)前位置>首頁 » 新聞資訊 » 小程序相關(guān) >
微信小程序?qū)W習(xí)筆記(三)-- 首頁及詳情頁開發(fā)
發(fā)表時間:2021-1-5
發(fā)布人:葵宇科技
瀏覽次數(shù):68
一、常用組件
在上一個章節(jié)中講解了封裝請求數(shù)據(jù)的模塊,在此處請求輪播圖的數(shù)據(jù)
1.首頁輪播圖數(shù)據(jù)的請求以及渲染
1.1 輪播圖數(shù)據(jù)的請求 pages/home/home.js
import { request } from './../../utils/index.js'
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
bannerlist: []
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad: function (options) {
request('/api/pro/banner').then(data => {
console.log(data)
// 微信小程序修改數(shù)據(jù)的方式
this.setData({
bannerlist: data.data
})
})
},
})
復(fù)制代碼
2 使用組件 - 視圖容器 - swiper
滑塊視圖容器。其中只可放置swiper-item組件,否則會導(dǎo)致未定義的行為。 屬性表如下
?
在pages/home/home.wxml文件中輸入如下代碼查看效果
<swiper
indicator-dots="{{true}}" autoplay="{{true}}" circular="{{true}}"
duration="{{500}}">
復(fù)制代碼
二、自定義組件 - 產(chǎn)品列表
1.自定義組件的布局
components/prolist/prolist.wxml
class="prolist">
<view class="proitem">
產(chǎn)品名稱
¥199
view>
</view>
復(fù)制代碼
2.自定義組件的樣式
components/prolist/prolist.wxss
/* components/prolist/prolist.wxss */
.prolist .proitem{
width: 100%;
display: flex;
height: 100px;
box-sizing: border-box;
border-bottom: 1px solid #ccc;
}
.prolist .proitem .itemimg{
width: 100px;
height: 100px;
padding: 5px;
}
.prolist .proitem .itemimg .img{
width: 90px;
height: 90px;
box-sizing: border-box;
border: 1px solid #ccc;
}
.prolist .proitem .iteminfo {
padding: 3px;
}
.prolist .proitem .iteminfo .title{
font-size: 18px;
font-weight: bold;
}
.prolist .proitem .iteminfo .price{
font-size: 12px;
}
復(fù)制代碼
3.首頁請求數(shù)據(jù),并且傳遞給子組件
pages/home/home.js
import { request } from './../../utils/index.js'
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
prolist: []
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad: function (options) {
request('/api/pro').then(data => {
console.log(data)
// 微信小程序修改數(shù)據(jù)的方式
this.setData({
prolist: data.data
})
})
},
})
復(fù)制代碼
pages/home/home.wxml
"{{prolist}}">prolist>
復(fù)制代碼
4.子組件接收數(shù)據(jù)
components/prolist/prolist.js
Component({
/**
* 組件的屬性列表
*/
properties: {
prolist: Array
},
})
復(fù)制代碼
5.子組件渲染數(shù)據(jù)
components/prolist/prolist.wxml
class="prolist">
<view class="proitem" wx:for="{{prolist}}" wx:key="item.proid">
{{item.proname}}
¥{{item.price}}
view>
</view>
復(fù)制代碼
三、實現(xiàn)下拉刷新上拉加載
1.開啟首頁的下拉刷新功能
pages/home/home.json
{
"usingComponents": {
"prolist": "/components/prolist/prolist"
},
"enablePullDownRefresh": true,
"backgroundColor": "#efefef",
"backgroundTextStyle": "dark"
}
復(fù)制代碼
2.完善相關(guān)的下拉刷新函數(shù)
pages/home/home.js
// pages/home/home.js
import { request } from './../../utils/index.js'
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
bannerlist: [],
prolist: [],
pageCode: 1 // 頁碼
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad: function (options) {
request('/api/pro/banner').then(data => {
console.log(data)
this.setData({
bannerlist: data.data
})
})
request('/api/pro').then(data => {
console.log(data)
this.setData({
prolist: data.data
})
})
},
/**
* 頁面相關(guān)事件處理函數(shù)--監(jiān)聽用戶下拉動作
*/
onPullDownRefresh: function () {
request('/api/pro').then(data => {
console.log(data)
this.setData({
prolist: data.data,
pageCode: 1
})
})
},
/**
* 頁面上拉觸底事件的處理函數(shù)
*/
onReachBottom: function () {
let num = this.data.pageCode;
let prolist = this.data.prolist
num++;
console.log(num)
request('/api/pro', {
pageCode: num
}).then(data => {
// 此處注意臨界值的變化 -- 沒有數(shù)據(jù)
this.setData({
prolist: [...prolist, ...data.data],
pageCode: num
})
})
}
})
復(fù)制代碼
上拉下拉測試即可
四、返回頂部功能實現(xiàn)
在首頁中設(shè)置一個固定定位的按鈕,然后綁定點擊事件,綁定事件使用 bindtap,然后調(diào)用小程序提供的api即可返回
// pages/home/home.wxml
class="backtop" bindtap="backtop"> ↑ </view>
// pages/home/home.wxss
.backtop {
position: fixed;
bottom: 10px;
right: 8px;
border-radius: 50%;
width: 30px;
height: 30px;
background-color: rgba(0, 0, 0, 0.5);
font-size: 18px;
text-align: center;
line-height: 30px;
}
// pages/home/home.js
Page({
/**
* 自定義函數(shù)
*/
backtop: function () {
// 小程序api 的界面 - 滾動
wx.pageScrollTo({
scrollTop: 0,
duration: 300
})
}
})
復(fù)制代碼
五、實現(xiàn)點擊商品列表進入產(chǎn)品的詳情頁面
1.構(gòu)建詳情頁面
app.json
"pages": [
"pages/detail/detail"
],
復(fù)制代碼
2.聲明式導(dǎo)航跳轉(zhuǎn)
使用小程序 組件-導(dǎo)航-navigator
頁面鏈接。
?
open-type 的合法值 -- 在編程式導(dǎo)航中詳細(xì)講解
// components/prolist/prolist.wxml
class="prolist">
<navigator url="{{'/pages/detail/detail?proid=' + item.proid}}" wx:for="{{prolist}}" wx:key="item.proid">
{{item.proname}}
¥{{item.price}}
navigator>
</view>
復(fù)制代碼
3.詳情頁面接收數(shù)據(jù)并且渲染數(shù)據(jù)
// pages/detail/detail.js
import { request } from './../../utils/index.js';
Page({
/**
* 頁面的初始數(shù)據(jù)
*/
data: {
proid: '',
proname: '',
proimg: ''
price: 0
},
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad: function (options) {
// options為接收的參數(shù)
const { proid } = options
request('/api/pro/detail?proid=' + proid).then(data => {
console.log(data.data)
const { proid, proname, price, proimg} = data.data
this.setData({
proid, proname, price, proimg
})
})
}
})
// pages/detail/detail.wxml
"{{proimg}}" style="width: 100px;height: 100px;">image>
{{proname}}</view>
¥{{price}}view>
復(fù)制代碼
點擊不同的產(chǎn)品測試即可
4.編程式導(dǎo)航渲染
使用小程序提供的api實現(xiàn)編程式路由的跳轉(zhuǎn)
wx.switchTab(Object object)
跳轉(zhuǎn)到 tabBar 頁面,并關(guān)閉其他所有非 tabBar 頁面
wx.reLaunch(Object object)
關(guān)閉所有頁面,打開到應(yīng)用內(nèi)的某個頁面
wx.redirectTo(Object object)
關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不允許跳轉(zhuǎn)到 tabbar 頁面
wx.navigateTo(Object object)
保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不能跳到 tabbar 頁面。使用 wx.navigateBack 可以返回到原頁面。小程序中頁面棧最多十層
wx.navigateBack(Object object)
關(guān)閉當(dāng)前頁面,返回上一頁面或多級頁面??赏ㄟ^ getCurrentPages 獲取當(dāng)前的頁面棧,決定需要返回幾層
小程序傳遞數(shù)據(jù)使用 data-params形式,可以在事件中根據(jù)event獲取該參數(shù)
// components/prolist/prolist.wxml
class="prolist">
<view class="proitem" bindtap="toDetail" data-proid="{{item.proid}}" wx:for="{{prolist}}" wx:key="item.proid">
{{item.proname}}
¥{{item.price}}
view>
</view>
// components/prolist/prolist.js
Component({
/**
* 組件的屬性列表
*/
properties: {
prolist: Array
},
/**
* 組件的初始數(shù)據(jù)
*/
data: {
},
/**
* 組件的方法列表
*/
methods: {
toDetail (event) {
const { proid } = event.currentTarget.dataset
wx.navigateTo({
url: '/pages/detail/detail?proid=' + proid
})
}
}
})
來源:掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
相關(guān)案例查看更多
相關(guān)閱讀
- 昆明軟件定制公司
- 海報插件
- 花農(nóng)小程序
- 云南網(wǎng)站建設(shè)百度官方
- 云南省城鄉(xiāng)建設(shè)廳網(wǎng)站
- 跳轉(zhuǎn)小程序
- 小程序開發(fā)課程
- 微信小程序
- 云南網(wǎng)站建設(shè)列表網(wǎng)
- 網(wǎng)站建設(shè)公司網(wǎng)站
- 網(wǎng)站制作
- 云南網(wǎng)站建設(shè)優(yōu)化
- 生成海報
- 報廢車管理
- 網(wǎng)站搭建
- 高端網(wǎng)站建設(shè)公司
- 云南網(wǎng)站建設(shè)哪家好
- 網(wǎng)頁制作
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 云南網(wǎng)站開發(fā)哪家好
- 網(wǎng)站沒排名
- 表單
- 昆明小程序公司
- 網(wǎng)絡(luò)公司哪家好
- 云南小程序被騙
- 排名
- 報廢車拆解回收管理系統(tǒng)
- 小程序設(shè)計
- 網(wǎng)站建設(shè)價格
- 云南網(wǎng)站建設(shè)價格