class06:声明式导航与编程式导航

class06:声明式导航与编程式导航,第1张

目录 一、首页案例(续)二、声明式导航1.通过导航组件navigator实现页面跳转2.导航的三种需求 三、编程式导航1.跳转到非tabBar页面:wx.navigateTo2.跳转到tabBar页面:wx.switchTab3.编程式导航后退(返回上一页):wx.navigateBack 四、复习总结

一、首页案例(续)
<!--pages/home/home.wxml-->
<!-- 轮播区域 -->
<swiper indicator-dots autoplay interval="2000" circular>
  <swiper-item wx:for="{{swiperImgList}}" wx:key="id">
    <image src="{{item.imgUrl}}"></image>
  </swiper-item>
</swiper>

<!-- 分类区域 -->
<view class="grid-wrap">
  <view class="grid-item" wx:for="{{gridDataList}}" wx:key="id">
    <image src="{{item.imgUrl}}"></image>
    <text>{{item.name}}</text>
  </view>
</view>

<!-- 商品区域 -->
<view class="goods-wrap">
  <view class="goods-item" wx:for="{{goodsDataList}}" wx:key="id">
    <image src="{{item.imgUrl}}" mode="widthFix"></image>
    <text>{{item.name}}</text>
  </view>
</view>
/* pages/home/home.wxss */
swiper{
  height: 400rpx;
}
swiper image{
  width: 100%;
  height: 100%;
}
.grid-wrap{
  display: flex;
  flex-wrap: wrap;
}
.grid-wrap .grid-item{
  width: 25%;
  height: 200rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.grid-wrap .grid-item image{
  width: 60rpx;
  height: 60rpx;
}
.grid-wrap .grid-item text{
  font-size: 24rpx;
  margin-top: 10rpx;
}

.goods-wrap{
  display: flex;
  padding: 10rpx;
  justify-content: space-between;
}
.goods-wrap .goods-item{
  width: 48%;
}
.goods-wrap .goods-item image{
  width: 100%;
}
.goods-wrap .goods-item text{
  font-size: 24rpx;
  margin-left: 8rpx;
}
// pages/home/home.js
Page({
  data: {
    swiperImgList:[], //轮播数据
    gridDataList:[],  //存放网格区块的分类数据
    goodsDataList:[]  //存储商品数据
  },

  //获取轮播图片
  getSwiperImgList(){
    wx.request({
      url: 'http://localhost:4000/swiper',
      method:"GET",
      success:(res)=>{
        console.log(res);
        // res接收到数据后不能直接传到小程序组件上,故先赋值
        this.setData({
          swiperImgList : res.data
        })
      },//箭头函数中的this是外部函数的this,其本身没有this
    })
  },

  //请求网格区块的数据
  getGridDataList(){
    wx.request({
      url: 'http://localhost:4000/categories',
      method:"GET",
      success:(res)=>{
        console.log(res);
        this.setData({
          gridDataList : res.data
        })
      },//箭头函数中的this是外部函数的this,其本身没有this
      //解构赋值写法
      // success:({data:res})=>{
      //   this.setData({
      //     gridDataList : res
      //   })
      // }
    })
  },

  //获取商品数据
  getGoodsDataList(){
    wx.request({
      url: 'http://localhost:4000/goods',
      method:"GET",
      success:(res)=>{
        console.log(res);
        // res接收到数据后不能直接传到小程序组件上,故先赋值
        this.setData({
          goodsDataList : res.data
        })
      },//箭头函数中的this是外部函数的this,其本身没有this
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    //页面加载时立即发起请求获取轮播数据
    this.getSwiperImgList();
    this.getGridDataList();
    this.getGoodsDataList();
  },
})

二、声明式导航 1.通过导航组件navigator实现页面跳转

注:
(1)组件导航的路径须以“/” 开头。
(2)若要跳转到TabBar页面,需要设置open-type属性为SwitchTab;

<!--pages/home2/home2.wxml-->
<navigator url="/pages/test/test">跳转到test页面</navigator> 
<navigator url="/pages/contact/contact" open-type="switchTab">跳转到TabBar指向的contact联系页面</navigator>
2.导航的三种需求

链接: https://developers.weixin.qq.com/miniprogram/dev/component/navigator.html
跳转到非tabBar页面,通过路径即可;
跳转到tabBar页面,通过路径和属性open-type=“switchTab”;
跳转到上一页面,通过属性open-type=“navigateBack”,delta="n"可设置回退的页面数n。

<!--pages/test/test.wxml-->
<!-- 后退导航:返回上n页 -->
<navigator open-type="navigateBack" delta="1">返回上一页</navigator>

###可通过声明式导航传递参数。例如:
将参数name、age、sex及其数值传递

<navigator url="/pages/test/test?name=james&age=37&sex=man"></navigator>

1.传递的参数可以在跳转的目的页面app左下角查看:

2.传递的参数也可以在跳转的目的页面中js文件中查看:


三、编程式导航 1.跳转到非tabBar页面:wx.navigateTo

页面路径必须以"/"开头:

//绑定事件
<button bindtap="goTestPage" type="primary">跳转到test页面</button>
// pages/home2/home2.js
Page({
  goTestPage(){
    //编程式导航:跳转到非tabBar页面
    wx.navigateTo({
      url: '/pages/test/test',//页面路径必须以"/"开头
    })
  },
})
2.跳转到tabBar页面:wx.switchTab

页面路径必须以"/"开头:

<button bindtap="goContectPage" type="primary">跳转到contact页面</button>
// pages/home2/home2.js
Page({
  goContectPage(){
    // 编程式导航:跳转到tabBar页面 
    wx.switchTab({
      url: '/pages/contact/contact',//页面路径必须以"/"开头
    })
  },
})

注意:编程式导航的传递参数与声明式导航传递参数的方法类似。

3.编程式导航后退(返回上一页):wx.navigateBack

链接: https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.navigateBack.html

<!--pages/test/test.wxml-->
<!-- 编程式后退导航 -->
<button bindtap="goBack" type="primary">返回上一页</button>
// pages/test/test.js
Page({
  goBack(){
    wx.navigateBack({
      delta: 1,//默认值
    })
    // wx.navigateBack()
  },
})
四、复习总结

微信小程序:

什么是小程序?
基于微信app上搭载的第3方程序,因此小程序需要依附在微信app(微信客户端)环境中。

开发小程序的前期准备
(1). 开发账号
(2). 安装开发工具IDE
(3). 认识工具怎么使用
(4). 认识小程序项目的基本组成结构
a. 全局配置
b. 页面配置

  以上的配置,遵循就近原则。 

学习微信小程序
(1). WXML : 结构
(2). WXSS :样式
(3). js :页面的js
(4). json :页面的配置

学习WXML
(1) 常用的组件

viewimagesnavigatiorbuttontextswiperswiper-itemmap
(2) 常用的语法:都可以通过小程序提供的语法,{{}} 来动态绑定属性的值、标签内的文本对组件/标签上添加逻辑: wx:if 逻辑判断是否渲染该组件 (创建节点 / 删除节点)wx:for 循环生成多个重复结构,内部使用的数据动态添加hidden 逻辑判断是否隐藏 / 显示组件(用样式display来控制) 以组件属性的形式添加 事件 bindtap 触摸后离开(类似点击效果)bindIinput 输入内容后触发事件bindchange 状态改变

学习WXSS : 跟传统的css差不太多,不支持一些复杂的选择器
(1). rpx 单位
(2). @import样式导入
(3). 全局样式 / 局部样式 : 在选择器权重相同的情况下,遵循就近原则。选择器权重不一样,使用权重更大的样式

json 文件
(1). 全局配置:pages、window、style、sitemapLocation、tabbar
(2). 页面配置(大部分是window节点,主要是对窗口效果的设置)

学习 JS :
(1). 事件函数,内部的逻辑就完全按照需求
(2). 发起网络请求:wx.request

常用属性: url : 请求地址method : 请求方式success : 请求成功后会调用的回调fail : 请求失败后会调用的回调complete : 不论请求成功 / 失败 都会调用 注意: 没有ajax,只能叫 网络请求没有跨域,因为跨域是浏览器遵循同源策略会阻止非同源的请求,微信没有阻止,只需要将请求的域名添加到 信任列表
(3). 页面导航 声明式导航:通过navigatior实现编程式导航:通过在js中调用对应的导航方法实现导航传参接收导航参数注意:导航到 tabbar页面 和 非tabbar页面 以及 后退 的区别

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1320461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-11
下一篇 2022-06-11

发表评论

登录后才能评论

评论列表(0条)

保存